2024 현재는 Api가 되지만 . 업데이트시 변경 될 수 있음, 주로 json 변경.
model 입력 란에 . dall-e-3 이라고 되어 있는데 2로 바꾸면 . 달리 2를 모델로
사용하게 된다 . 없으면 디폴트로 달리만 사용.
'model': 'dall-e-3',
문제는 달리3의 이미지 생성 기능은 1분에 1장이고 제한이 있고 , 걸핏 하면 안된다. json 으로 회신이 오는데 . 사용량 초과 라고 계속 나오고 답도 안줄때가 많다.
그래서 주로 달리 2 를 사용 한다. . 미드저니나 다른 생성 ai 보면 기대 보다 달라서
많이 아쉬울 것 같다. 기대수준을 마~~~니 낮추면 된다.
물론 , 제약 사항이 있다. 1분에 3장이다 ..
아래 코드는 연결하는 과정에 prompt로 사용자의 text입력을
전달 하고 받아온다.
Api 키부분은 직접 발급 받아서 입력
bool isLoading = false;
String imageUrl = '';
generateDalle(prompt) async {
print('==> $prompt');
setState(() {
isLoading = true; // Start loading
});
final uri = Uri.parse('https://api.openai.com/v1/images/generations');
final headers = {'Content-Type': 'application/json', 'Authorization': 'Bearer ${APIKey.apiKey}'};
final body = jsonEncode({
'model': 'dall-e-3',
'prompt': '$prompt',
'size': '1024x1024',
'quality': 'standard',
'n': 1,
});
예외처리 .
확인하느라 print 도배하는 나쁜 손 ..
try {
final response = await http.post(uri, headers: headers, body: body);
if (response.statusCode == 200) {
final responseData = jsonDecode(response.body);
final image_url = responseData['data'][0]['url'];
print(responseData);
print('Image URL: $image_url');
setState(() {
imageUrl = image_url;
isLoading = false;
});
} else {
print('Failed to generate image: ${response.body}');
setState(() {
isLoading = false;
});
}
} catch (er) {
print('Error ==>> $er');
isLoading = false;
}
입력할 텍스트 필드
, dispose랑 묵어서 쓰는 편이 맘편하다.
TextEditingController textEditingController = TextEditingController();
@override
void dispose() {
textEditingController.dispose();
super.dispose();
}
화면표시와 버튼
generateDalle(textEditingController.text);
Scaffold(
appBar: AppBar(title: Text('Ai Dalle 3 image')),
body: Container(
margin: EdgeInsets.all(20),
child: Column(
children: [
TextField(
controller: textEditingController,
decoration: InputDecoration(
hintText: 'hint for image',
border: OutlineInputBorder(),
),
),
MaterialButton(
child: Text(isLoading ? ' Generating ...' : ' Generate Image'),
onPressed: () {
if (!isLoading) {
generateDalle(textEditingController.text);
}
}),
imageUrl != '' ? Image.network(imageUrl) : Container(),
imageUrl.isNotEmpty ? Image.network(imageUrl) : Container(),
],
),
),
);
'Ai' 카테고리의 다른 글
문자인식기, google_mlkit_text_recognition , 복붙으로 만들기 (0) | 2024.01.15 |
---|---|
기계학습 & 유형 Machine Learning (1) | 2023.12.26 |
GPT와 BARD 가 못푸는 산수 코딩문제 , basic coding but GPT & BARD can't solve (0) | 2023.12.25 |
GPT 에 질문하는 가장 쉬운 간단한 예제 및 방법, 질문형식 (1) | 2023.12.24 |
Google Ai Gemini Story of Legends 구글 제미니 쌍둥이별자리 이야기 by GTP4 (0) | 2023.12.07 |