Vu que j'ai pas d'API DALL-E ça me retourne bien un message d'erreur de la requête mais pour le reste vois par toi même du coup.
Code : Tout sélectionner
Global ldvm, Prompt$, APIKey$, ImageUrl$, FileName$
Global imageRendu, Button_Generate, Button_Save
Global ComboBox_Size, String_Prompt, String_APIKey, Spin_NumImages
UseJPEGImageDecoder()
UseJPEGImageEncoder()
UsePNGImageDecoder()
UsePNGImageEncoder()
Procedure SendDalleRequest()
Define.s jsonRequest, jsonResponse, url
Define.i httpRequest
Define *response
NewMap Header$()
Prompt$ = GetGadgetText(String_Prompt)
APIKey$ = GetGadgetText(String_APIKey)
Define numImages = GetGadgetState(Spin_NumImages)
Define.s size = GetGadgetText(ComboBox_Size)
If Prompt$ = "" Or APIKey$ = ""
MessageRequester("Erreur", "Veuillez remplir tous les champs.")
ProcedureReturn
EndIf
jsonRequest = "{" + Chr(34) + "prompt" + Chr(34) + ": " + Chr(34) + Prompt$ + Chr(34) + ", "
jsonRequest + Chr(34) + "n" + Chr(34) + ": " + Str(numImages) + ", "
jsonRequest + Chr(34) + "size" + Chr(34) + ": " + Chr(34) + size + Chr(34) + "}"
url = "https://api.openai.com/v1/images/generations"
Header$("Content-Type") = "application/json"
Header$("Authorization") = "Bearer " + APIKey$
httpRequest = HTTPRequest(#PB_HTTP_Post, url, jsonRequest, 0, Header$())
If httpRequest
*response = HTTPMemory(httpRequest)
jsonResponse = PeekS(*response, MemorySize(*response), #PB_UTF8)
FinishHTTP(httpRequest)
If FindString(jsonResponse, "url", 1)
ImageUrl$ = StringField(jsonResponse, 2, Chr(34) + "url" + Chr(34) + ": " + Chr(34))
ImageUrl$ = StringField(ImageUrl$, 1, Chr(34))
httpRequest = HTTPRequest(#PB_HTTP_Get, ImageUrl$)
If httpRequest
*response = HTTPMemory(httpRequest)
If *response
CatchImage(0, *response, MemorySize(*response))
SetGadgetState(imageRendu, ImageID(0))
FreeMemory(*response)
EndIf
FinishHTTP(httpRequest)
EndIf
Else
MessageRequester("Erreur", "Réponse invalide : " + jsonResponse)
EndIf
Else
MessageRequester("Erreur", "Échec de la requête HTTP.")
EndIf
EndProcedure
Procedure SaveMyImage()
If ImageUrl$ = ""
MessageRequester("Erreur", "Aucune image à enregistrer.")
ProcedureReturn
EndIf
FileName$ = SaveFileRequester("Enregistrer l'image sous...", "", "PNG (*.png)|*.png|JPEG (*.jpg)|*.jpg", 0)
If FileName$ <> ""
httpRequest = HTTPRequestMemory(#PB_HTTP_Get, ImageUrl$)
If httpRequest
If Right(FileName$, 3) = "png"
SaveImage(0, FileName$, #PB_ImagePlugin_PNG)
Else
SaveImage(0, FileName$, #PB_ImagePlugin_JPEG, 8)
EndIf
FreeMemory(*response)
EndIf
FinishHTTP(httpRequest)
MessageRequester("Succès", "Image enregistrée avec succès !")
EndIf
EndProcedure
Procedure OpenWin()
ldvm = OpenWindow(#PB_Any, 100, 100, 500, 400, "DALL-E Image Generator")
String_Prompt = StringGadget(#PB_Any, 10, 10, 480, 30, "")
ComboBox_Size = ComboBoxGadget(#PB_Any, 10, 50, 200, 25)
AddGadgetItem(ComboBox_Size, -1, "1024x1024")
AddGadgetItem(ComboBox_Size, -1, "1792x1024")
AddGadgetItem(ComboBox_Size, -1, "1024x1792")
SetGadgetState(ComboBox_Size, 0)
Spin_NumImages = SpinGadget(#PB_Any, 220, 50, 50, 25, 1, 4, #PB_Spin_Numeric)
String_APIKey = StringGadget(#PB_Any, 10, 90, 480, 30, "", #PB_String_Password)
Button_Generate = ButtonGadget(#PB_Any, 10, 130, 100, 30, "Générer")
Button_Save = ButtonGadget(#PB_Any, 120, 130, 100, 30, "Enregistrer")
imageRendu = ImageGadget(#PB_Any, 10, 170, 480, 220, 0)
BindGadgetEvent(Button_Generate, @SendDalleRequest())
BindGadgetEvent(Button_Save, @SaveMyImage())
EndProcedure
OpenWin()
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow