Farih.co.id
Home Programming Cara Membuat Gambar Menggunakan OpenAI API dan DALL·E 2 dengan Python

Cara Membuat Gambar Menggunakan OpenAI API dan DALL·E 2 dengan Python

Jika Anda pernah menggunakan ChatGPT, Anda telah menyaksikan intuisinya. Dengan API OpenAI, pembuatan kode, penyelesaian teks, perbandingan teks, pelatihan model, dan pembuatan gambar semuanya tersedia bagi pengembang untuk dijelajahi dan diintegrasikan ke dalam aplikasi.


Dalam tutorial ini, Anda akan mempelajari cara menggunakan API OpenAI dengan Python untuk membuat, mengedit, dan memvariasikan gambar menggunakan petunjuk bahasa alami.


Memulai Dengan OpenAI Menggunakan Python

Anda perlu mengatur beberapa hal sebelum memulai tutorial ini. Pertama, pastikan Anda telah menginstal versi terbaru Python di komputer Anda. Jika Anda menggunakan distribusi Linux seperti Ubuntu, Anda mungkin juga ingin melihat cara memasang Python di Ubuntu.

Buat folder baru untuk proyek Anda dan buka baris perintah ke direktori proyek Anda.

Selanjutnya adalah instalasi paket OpenAI. Anda perlu menginstal bantal untuk mengonversi gambar ke RGBA saat menggunakan titik akhir pengeditan gambar. Anda mungkin juga ingin menginstal python-dotenv; Anda akan menggunakan ini untuk menutupi kunci rahasia.

Kami merekomendasikan untuk membuat lingkungan virtual Python khusus untuk mengisolasi dependensi.

Kode yang digunakan dalam proyek ini tersedia di a repositori GitHub dan gratis untuk Anda gunakan di bawah lisensi MIT.

Untuk menginstal python-dotenv, bantalDan openai paket, jalankan perintah berikut di terminal:

 pip install openai python-dotenv pillow

Sekarang pergilah ke OpenAI dan masuk ke dasbor Anda untuk mengambil kunci API Anda:

  1. Setelah masuk, klik ikon profil Anda di bagian kanan atas.
  2. Pergi ke Lihat Kunci API. Jika kunci API Anda tidak terlihat, klik Buat kunci rahasia baru untuk menghasilkan yang baru.
  3. Salin kunci rahasia yang dihasilkan dan tempel di tempat yang aman di komputer Anda. Anda mungkin ingin menempelkannya ke file variabel lingkungan di direktori root proyek Anda untuk keamanan.

Cara Menghasilkan dan Mengedit Gambar Dengan OpenAI API dengan Python

Pembuatan gambar OpenAI API menampilkan titik akhir untuk menghasilkan gambar baru, membuat variasi gambar, dan mengeditnya.

Di bagian berikut, Anda akan menjelajahi titik akhir ini untuk membuat, mengedit, mengubah, dan mengunduh gambar menggunakan perintah bahasa alami.

Menghasilkan Gambar Menggunakan OpenAI API

Titik akhir pembuatan gambar menerima tiga argumen kata kunci. Ini termasuk mengingatkan, NDan ukuran.

Itu mengingatkan kata kunci adalah string teks yang menjelaskan gambar yang ingin Anda hasilkan, sementara N adalah jumlah gambar yang dihasilkan selama panggilan API. Itu ukuran adalah ukuran gambar, dan saat penulisan, hanya menerima 256×256, 512×512, dan 1024×1024 piksel, menurut pejabat OpenAI dokumentasi pembuatan gambar.

Kode berikut menghasilkan gambar menggunakan petunjuk bahasa alami dan menampilkan URL-nya (alamat gambar):

 import openai
import os
import requests
from dotenv import load_dotenv
from PIL import Image
load_dotenv()

class ImageGenerator:
    def __init__(self) -> str:
        self.image_url: str
        openai.api_key = os.getenv("OPENAI_API_KEY")
        self.APIKey = openai.api_key
        self.name = None

    def generateImage(self, Prompt, ImageCount, ImageSize):
        try:
            self.APIKey
            response = openai.Image.create(
            prompt = Prompt,
            n = ImageCount,
            size = ImageSize,
            )
            self.image_url = response['data']
            
            self.image_url = [image["url"] for image in self.image_url]
            print(self.image_url)
            return self.image_url
        except openai.error.OpenAIError as e:
            print(e.http_status)
            print(e.error)

    def downloadImage(self, names)-> None:
        try:
            self.name = names
            for url in self.image_url:
                image = requests.get(url)
            for name in self.name:
                with open("{}.png".format(name), "wb") as f:
                    f.write(image.content)
        except:
            print("An error occured")
            return self.name


imageGen = ImageGenerator()


imageGen.generateImage(
Prompt = "Giant lion, bear, ape, and tiger standing on a water water fall",
ImageCount = 2,
ImageSize = '1024x1024'
)


imageGen.downloadImage(names=[
"Animals",
"Animals2"
])

Kode di atas berisi sebuah ImageGenerator kelas dengan image_url Dan Kunci API atribut. Itu generateImage metode mengadaptasi persyaratan titik akhir pembuatan gambar. Ini menghasilkan N URL menggunakan prompt bahasa alami, tergantung pada Penghitungan Gambar nilai.

Namun, self.image_url mengekstrak URL gambar yang dihasilkan dari respons JSON ke dalam daftar menggunakan loop for dalam pemahaman daftar.

Outputnya terlihat seperti ini:

Akhirnya, downloadImage metode mengunduh setiap gambar dengan meminta alamat yang dihasilkan. Metode ini menerima N jumlah nama yang ingin Anda berikan pada setiap gambar.

Mengedit Gambar Menggunakan OpenAI API

Titik akhir pengeditan memungkinkan Anda untuk mengedit gambar yang ada berdasarkan template topeng. Topeng adalah format RGBA dengan area transparan beranotasi dan harus berukuran sama dengan gambar yang ingin Anda edit.

Saat Anda memberikan mask, titik akhir pengeditan menggantikan area mask dengan permintaan baru di gambar yang ada untuk menghasilkan yang baru. Tambahkan metode berikut ke kelas sebelumnya di atas:

 class ImageGenerator:
    def __init__(self, ...):
        ..............

    def convertImage(self, maskName):
       image = Image.open("{}.png".format(maskName))
       rgba_image = image.convert('RGBA')
       rgba_image.save("{}.png".format(maskName))

       return rgba_image

    
    def editImage(self, imageName, maskName, ImageCount, ImageSize, Prompt) -> str:
        self.convertImage(maskName)
        response = openai.Image.create_edit(
          image = open("{}.png".format(imageName), "rb"),
          mask = open("{}.png".format(maskName), "rb"),
          prompt = Prompt,
          n = ImageCount,
          size = ImageSize,
          )
        self.image_url = response['data']
        self.image_url = [image["url"] for image in self.image_url]

        print(self.image_url)
        return self.image_url


imageGen.editImage(
   imageName = "Animals",
   maskName = "mask",
   ImageCount = 1,
   ImageSize = "1024x1024",
   Prompt = "An eagle standing on the river bank drinking water with a big mountain"
)


imageGen.downloadImage(names=[
"New Animals",
])

Itu convertImage metode mengubah gambar topeng ke format RGBA. Anda dapat mencapai ini menggunakan mengubah metode dari paket bantal Python (diimpor sebagai PIL).

Setelah dikonversi, ia menyimpan topeng baru sebagai penimpaan dari topeng yang sudah ada. Jadi, konversi gambar adalah tugas pertama metode pengeditan (editGambar) dijalankan.

Itu gambar membaca gambar target dari file yang ada, sedangkan masker membaca gambar topeng yang dikonversi, yang harus memiliki area transparan.

Anda dapat menandai area transparan pada topeng menggunakan perangkat lunak pengedit foto seperti Gimp atau Photoshop.

Misalnya, gambar yang ingin kita edit menggunakan prompt pada kode di atas adalah:

Sekarang, asumsikan Anda ingin mengganti antelop yang berdiri di tepi sungai dengan seekor elang, seperti yang dinyatakan dalam prompt.

Berikut penampakan topengnya:

Karena kata kunci pada prompt dari kode di atas berbunyi, “seekor elang berdiri di tepi sungai”, titik kosong diisi oleh elang, menggantikan antelop yang sebelumnya ada di sana.

Inilah gambar baru dalam kasus ini:

Anda dapat mencoba bermain-main dengan titik akhir pengeditan gambar menggunakan foto lain.

Menghasilkan Variasi Gambar dengan Python Menggunakan OpenAI API

Titik akhir variasi menghasilkan gambar alternatif dari gambar yang ada. Perluas kelas pembuat gambar lebih lanjut dengan menambahkan metode variasi gambar seperti yang ditunjukkan di bawah ini:

 class ImageGenerator:
    def __init__(self) -> str:
        .............
        
    def imageVariations(self, ImageName, VariationCount, ImageSize):
        response = openai.Image.create_variation(
            image = open("{}.png".format(ImageName), "rb"),
            n = VariationCount,
            size = ImageSize
            )
        
        self.image_url = response['data']
            
        self.image_url = [image["url"] for image in self.image_url]
        print(self.image_url)
        return self.image_url
        
imageGen = ImageGenerator()


imageGen.imageVariations(
    ImageName = "New_Animals",
    VariationCount = 2,
    ImageSize = "1024x1024"
)


imageGen.downloadImage(names=[
    "Variation1",
    "Variation2",
    ]
)

Kode di atas menghasilkan variasi gambar.

Gunakan OpenAI untuk Keuntungan Anda

Sementara beberapa orang takut AI mungkin mencuri pekerjaan mereka, bagaimanapun juga itu adalah surga — jika Anda belajar untuk mengontrol dan menggunakannya. Tutorial pembuatan gambar OpenAI ini hanyalah salah satu dari banyak kasus penggunaan AI di dunia nyata. API OpenAI menyediakan model terlatih praktis yang dapat Anda integrasikan dengan mudah ke dalam aplikasi Anda. Jadi Anda dapat menerima tantangan dan membangun sesuatu yang berharga dari tutorial ini.

Meskipun API pembuatan gambar masih dalam versi beta saat penulisan, ini sudah memungkinkan Anda membuat karya seni imajiner. Semoga mendapat pembaruan lebih lanjut untuk memungkinkan peningkatan dan menerima berbagai ukuran gambar.

Comment
Share:

Leave a Reply

Your email address will not be published. Required fields are marked *

Ad