# Python으로 FLET을 사용하여 이미지 생성기 구축
소개
안녕하세요 소프트웨어 개발자 ??, Arsey님?
늦게 업데이트해서 죄송합니다. 저는 학생이고 개인적인 프로젝트를 진행 중이었지만 앞으로 계속해서 소식을 전해 드리겠습니다.
그래서 내 마지막 튜토리얼에서 누군가가 kivy 및 flet과 같은 Python 프레임워크에서 GenAI를 사용할 수 있는지 언급했는데 내 대답은 '예'였습니다. 이를 사용하여 GenAI 앱을 구축할 수 있습니다. 가장 확장성이 뛰어난 것은 아닐 수도 있지만 이러한 프레임워크를 사용하는 사이드 프로젝트의 경우 조용하게 사용 가능합니다.
이 튜토리얼에서는 flet과 flux.dev로 알려진 이미지 생성 모델을 사용하여 Python으로 간단한 이미지 생성기 앱을 구축하겠습니다.
Flux는 강력한 이미지 생성기 모델이므로 컴퓨터에서 실행하려면 높은 컴퓨팅 성능이 필요하므로 내 컴퓨터는 그만큼 강력하므로 여기서는 Flux에 대한 API 엔드포인트를 제공하는 플랫폼인 Replicate를 사용하겠습니다. 사용자 경험에 따라 이미지 생성이 API에 의해 처리되므로 시스템이 다운되거나 지연되지 않습니다. 하지만 Flux API가 있는 Huggingsface를 사용할 수 있지만 따라가면 복제를 사용하겠습니다. 무엇을 기다리고 있는지 살펴보겠습니다.
전제 조건
애플리케이션 구축을 시작하기 전에 함수 및 일부 oop 개념과 같은 Python 기본 사항에 대한 기본 지식을 갖추고 시스템에 필요한 패키지가 설치되어 있는지 확인하는 것이 좋습니다. 우리는 다음 패키지를 사용할 것입니다.
Flet을 모르시는 분들을 위한 사용자 인터페이스 구축을 위한 Flet입니다. Flet은 가장 사랑받는 모바일 프레임워크 중 하나인 Flutter를 기반으로 하는 Python 라이브러리입니다. Flet을 사용하면 실시간으로 빠르고 아름다운 사용자 인터페이스를 구축할 수 있으며 크로스 플랫폼을 실행할 수 있습니다.
replicate Replicate는 서비스형 플랫폼(PAAS)으로, 설치하지 않고도 사용할 수 있는 미리 만들어진 모델을 제공하는 플랫폼입니다. 여기서 의미하는 바는 복제가 애플리케이션에서 도달할 API 엔드포인트를 제공한다는 것입니다. Replicate는 걱정 없이 애플리케이션 기능에 집중할 수 있도록 클라우드에서 요청과 응답을 처리합니다.
여기서 API 엔드포인트에 대한 요청을 보내고 응답을 받고 복제할 수 있습니다.
아, 파일 관리용 OS라도 이를 사용하면 로컬 시스템에 이미지를 저장할 수 있습니다.
프로젝트 설정(환경 설정)
필수 패키지 설치
pip install flet 복제 요청
설치가 완료되면 키보드를 조작할 준비가 되었습니다. 여기에서 복제를 사용하여 계정을 생성해야 합니다. 복제 계정을 생성하고 GitHub 자격 증명을 사용하여 인증하고 권한을 부여해야 합니다.
계정을 생성하면 이제 복제 대시보드로 리디렉션됩니다. 여기에서 다양한 모델을 볼 수 있지만 이 튜토리얼에서는 flux.dev를 사용합니다. flux.dev 모델을 찾아 사용하면 선택한 다른 모드도 작동할 수 있습니다.
API를 사용할 수 있도록 복제 설치 알림을 보냅니다. 모두 완료한 다음 API 토큰을 복제하고 생성하면 복제에서 클라이언트 측 앱으로의 엔드포인트가 설정됩니다.
참고: 개발 버전은 생산 또는 상업적 목적으로 사용되지 않으며 무료 버전의 모델을 사용할 수 있는 토큰이 제한되어 있으므로 흥분하여 임의의 이미지나 이미지를 생성하지 마십시오. 그렇지 않으면 모든 무료 크레딧을 잃게 됩니다.
이제 우리는 어디에 있었나요? 아, 지금까지 모든 설정이 완료된 것 같습니다. 이제 API를 사용해 보겠습니다.
사용자 인터페이스 구축
먼저 사용자 인터페이스를 구축할 것입니다. 이 부분이 끝나면 모의 UI가 완성됩니다. 이제 즐겨 사용하는 IDE/코드 편집기를 열고 이 코드를 입력하세요.
import os import flet as ft import replicate import requests # Set the Replicate API token in the environment os.environ["REPLICATE_API_TOKEN"] = "YOUR_API_TOKEN" # Function to interact with Replicate API for image generation def generate_image(prompt): pass # Function to save the image locally def save_image(image_url, filename="generated_image.webp"): pass # Main function to define the Flet app def main(page: ft.Page): page.title = "ArseyGen" page.horizontal_alignment = 'center' page.scroll = ft.ScrollMode.AUTO page.theme_mode = ft.ThemeMode.DARK page.appbar = ft.AppBar( title=ft.Text("REPLICATE IMAGE GENERATOR"), center_title=True ) # Placeholder image to avoid missing src error result_image = ft.Image( src="https://via.placeholder.com/512", width=512, height=512 ) # Define the save button (initially disabled) save_image_button = ft.ElevatedButton(text="Save Image", disabled=True) # Function to handle image generation def generate_and_display_image(e): pass prompt_input = ft.TextField(label="Enter a text prompt") generate_button = ft.ElevatedButton( text="Generate Image", on_click=generate_and_display_image ) # Add components to the page page.add( ft.SafeArea( content=ft.Column( [ prompt_input, generate_button, result_image, save_image_button, ], horizontal_alignment=ft.CrossAxisAlignment.CENTER ) ) ) # Run the Flet app if __name__ == '__main__': ft.app(target=main)
출력
이 단계에는 이와 같은 것이 있습니다.
코드 설명
우리가 수행한 작업은 다음과 같습니다. 먼저 필수 모듈을 가져옵니다.
그런 다음 복제로 제공되는 api_token을 설정합니다.
그런 다음 나중에 사용할 자리 표시자 기능을 설정하고 pass 문을 사용했습니다
무시하세요.
그런 다음 기본 기능이 UI를 설명하고 구축합니다. 여기서는 페이지 제목, 정렬 등을 설정합니다.
페이지가 스크롤 가능하도록 스크롤 동작을 수행합니다. 나머지는 UI 요소입니다. 보시다시피 UI에 이미지를 표시할 수 있는 AppBar, Image가 있고 마지막으로
사용자 프롬프트를 캡처하려면 TextField를 추가하세요. 이미지 생성 및 저장을 각각 처리하는 생성 및 저장 버튼입니다.
마지막으로 페이지에 구성 요소를 추가합니다. SafeArea를 사용했습니다. 이는 충분한 패딩을 제공하고 운영 체제의 침입을 피하는 데 도움이 됩니다. 우리의 경우에는 들여쓰기가 됩니다.
AppBar의 보간을 방지하기 위한 Column 위젯을 사용하면 Column 위젯과 마찬가지로 UI 요소를 수직 배열로 표시할 수 있습니다.
복제 통합
당신의 흥분이 느껴집니다. 이것이 가장 중요한 단계이므로 실수하지 않도록 주의하세요. 그렇지 않으면 코드가 깨지고 결국 디버깅이 끝나게 됩니다. 아, 디버깅은 좋은 기술입니다. 왜냐하면 제가 2일이 걸렸기 때문입니다. 잘못된 토큰이 있는 API 엔드포인트를 디버깅하려면 UI와 3일을 수정하세요.
안타깝습니다. 프로세스에서 버그/오류가 발생하면 디버깅을 시도하고 결과를 확인하세요. 최선을 다해 도와드리겠습니다. 저나 다른 개발자가 도움을 드릴 수 있는지 질문해 주세요.
이제 모델을 통합하고 flux.dev에 대한 복제 등을 수행해 보겠습니다.
제공된 코드를 복사하면 몇 가지 내용을 변경하겠습니다. 좋습니다. 완료되었습니다.
generate_image 함수를 다음과 같이 업데이트하세요.
import os import flet as ft import replicate import requests # Set the Replicate API token in the environment os.environ["REPLICATE_API_TOKEN"] = "YOUR_API_TOKEN" # Function to interact with Replicate API for image generation def generate_image(prompt): pass # Function to save the image locally def save_image(image_url, filename="generated_image.webp"): pass # Main function to define the Flet app def main(page: ft.Page): page.title = "ArseyGen" page.horizontal_alignment = 'center' page.scroll = ft.ScrollMode.AUTO page.theme_mode = ft.ThemeMode.DARK page.appbar = ft.AppBar( title=ft.Text("REPLICATE IMAGE GENERATOR"), center_title=True ) # Placeholder image to avoid missing src error result_image = ft.Image( src="https://via.placeholder.com/512", width=512, height=512 ) # Define the save button (initially disabled) save_image_button = ft.ElevatedButton(text="Save Image", disabled=True) # Function to handle image generation def generate_and_display_image(e): pass prompt_input = ft.TextField(label="Enter a text prompt") generate_button = ft.ElevatedButton( text="Generate Image", on_click=generate_and_display_image ) # Add components to the page page.add( ft.SafeArea( content=ft.Column( [ prompt_input, generate_button, result_image, save_image_button, ], horizontal_alignment=ft.CrossAxisAlignment.CENTER ) ) ) # Run the Flet app if __name__ == '__main__': ft.app(target=main)
이 기능은 Replicate API와 상호 작용하여 사용자가 제공한 텍스트 프롬프트에 따라 이미지 기반을 생성합니다.
그런 다음 프롬프트 및 기타 모델 매개변수를 보냅니다
API에 생성된 이미지의 URL을 반환하고, 문제가 있으면 None을 반환하여 오류를 처리합니다.
복제본에서 복사한 API 토큰을 붙여넣으세요. 그래서 이렇게 생겼네요
os.environ["REPLICATE_API_TOKEN"]="r8_KhysOWTKUjRsagyyyLNIWvvg2K78qrE48RwTh"
토큰이 있는지 확인하세요. 여기에서 API 토큰 받기에서 API 토큰을 얻을 수 있습니다
이미지 생성 및 표시 기능 적용
완료되면 generate_and_display_image 함수도 업데이트하고 아래 코드를 입력하세요.
def generate_image(prompt): try: # Make the API call to Replicate to generate an image output = replicate.run( "bingbangboom-lab/flux-dreamscape:b761fa16918356ee07f31fad9b0d41d8919b9ff08f999e2d298a5a35b672f47e", # "black-forest-labs/flux-dev", input={ "model": "dev", "prompt": prompt, "lora_scale": 1, "num_outputs": 1, "aspect_ratio": "1:1", "output_format": "webp", "guidance_scale": 3.5, "output_quality": 80, "prompt_strength": 0.8, "extra_lora_scale": 0.8, "num_inference_steps": 28 } ) # Return the generated image URL return output[0] except Exception as e: print(f"Error: {e}") return None
이 시점에서 애플리케이션을 실행할 때 프롬프트를 입력하고 생성 버튼을 클릭하면 진행률 표시줄이 표시되고 몇 초 내에 UI에 생성된 이미지가 표시됩니다. 그리고 과도하게 생성하지 마십시오. 그렇지 않으면 크레딧을 잃게 됩니다. 그리고 재미없을 거라고 약속해요.
코드 설명
여기서 이 기능은 애플리케이션에서 이미지를 생성하고 표시하는 작업 흐름을 관리합니다. 사용자의 프롬프트를 받아 generate_image()를 호출하여
image_url을 생성하고 result_image로 앱 UI를 업데이트합니다. 프로세스가 실패하면 오류 대화 상자가 표시됩니다. 또한 이미지가 성공적으로 생성된 후 "이미지 저장" 버튼을 활성화합니다.
save_image 기능 적용
이제 피곤해지더라도 에너지를 절약하고 커피를 마시고 프로젝트를 완료하세요. 이제 절약 기능을 추가할 예정입니다.
지금까지 기본 사용자 인터페이스가 있어 이미지를 성공적으로 생성할 수 있지만 문제가 있습니다. 시스템에 이미지를 저장하려면 현재 애플리케이션이 이미지를 생성하고...
완료되었습니다. 이 문제를 해결하려면 저장 기능을 추가해야 합니다.
따라서 코드에서 save_image 함수를 다음과 같이 업데이트하세요.
def generate_and_display_image(e): prompt = prompt_input.value if prompt: page.splash = ft.ProgressBar() # Display progress bar while generating image page.update() # Generate image based on user's prompt image_url = generate_image(prompt) page.splash = None # Hide progress bar if image_url: # Update image source only if we have a valid URL result_image.src = image_url result_image.update() # Enable save button after image is generated save_image_button.disabled = False save_image_button.update() # Define save button's functionality (save the image locally when clicked) def save_image_click(e): save_image(image_url, "anime.webp") save_image_button.on_click = save_image_click else: # Display an error message if image generation fails page.dialog = ft.AlertDialog( title=ft.Text("Error"), content=ft.Text("Failed to generate image. Please try again."), actions=[ ft.TextButton( "OK", on_click=lambda _: page.dialog.close() ) ] ) page.dialog.open = True page.update()
코드 설명
이제 여기서 수행된 작업을 분석해 보겠습니다.
이 기능을 사용하면 generate_image를 로컬 시스템에 다운로드하고 저장할 수 있습니다. image_url과 선택적 파일 이름을 사용하고 HTTP 요청을 통해 이미지 데이터를 검색하여 파일에 씁니다.
다운로드가 실패할 경우 오류 처리를 보장합니다.
결론
글쎄요! Python, flet 및 flux를 사용하는 간단한 이미지 생성기 동료 개발자입니다.
이 프로젝트를 진행하는 것은 즐거웠으며 여러분도 여기에 참여하고 싶습니다.
최종 결과물은 다음과 같습니다.
최근 해커톤에 참가한 이후로 업로드를 하지 않고 있으며 학생들과 직장인을 위한 책도 쓰고 있는데 머리가 아파서 프로그래밍을 잠시 중단하고 잠시 쉬었습니다.
그런데 이제부터 콘텐츠를 업로드하겠습니다.
기다려주셔서 감사합니다. 개발자 여러분을 위해 더 많이 업로드하겠습니다.
위 내용은 # Python으로 FLET을 사용하여 이미지 생성기 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

Python은 배우고 사용하기 쉽고 C는 더 강력하지만 복잡합니다. 1. Python Syntax는 간결하며 초보자에게 적합합니다. 동적 타이핑 및 자동 메모리 관리를 사용하면 사용하기 쉽지만 런타임 오류가 발생할 수 있습니다. 2.C는 고성능 응용 프로그램에 적합한 저수준 제어 및 고급 기능을 제공하지만 학습 임계 값이 높고 수동 메모리 및 유형 안전 관리가 필요합니다.

하루에 2 시간 동안 파이썬을 배우는 것으로 충분합니까? 목표와 학습 방법에 따라 다릅니다. 1) 명확한 학습 계획을 개발, 2) 적절한 학습 자원 및 방법을 선택하고 3) 실습 연습 및 검토 및 통합 연습 및 검토 및 통합,이 기간 동안 Python의 기본 지식과 고급 기능을 점차적으로 마스터 할 수 있습니다.

Python은 개발 효율에서 C보다 낫지 만 C는 실행 성능이 높습니다. 1. Python의 간결한 구문 및 풍부한 라이브러리는 개발 효율성을 향상시킵니다. 2.C의 컴파일 유형 특성 및 하드웨어 제어는 실행 성능을 향상시킵니다. 선택할 때는 프로젝트 요구에 따라 개발 속도 및 실행 효율성을 평가해야합니다.

Python과 C는 각각 고유 한 장점이 있으며 선택은 프로젝트 요구 사항을 기반으로해야합니다. 1) Python은 간결한 구문 및 동적 타이핑으로 인해 빠른 개발 및 데이터 처리에 적합합니다. 2) C는 정적 타이핑 및 수동 메모리 관리로 인해 고성능 및 시스템 프로그래밍에 적합합니다.

Pythonlistsarepartoftsandardlardlibrary, whileraysarenot.listsarebuilt-in, 다재다능하고, 수집 할 수있는 반면, arraysarreprovidedByTearRaymoduledlesscommonlyusedDuetolimitedFunctionality.

파이썬은 자동화, 스크립팅 및 작업 관리가 탁월합니다. 1) 자동화 : 파일 백업은 OS 및 Shutil과 같은 표준 라이브러리를 통해 실현됩니다. 2) 스크립트 쓰기 : PSUTIL 라이브러리를 사용하여 시스템 리소스를 모니터링합니다. 3) 작업 관리 : 일정 라이브러리를 사용하여 작업을 예약하십시오. Python의 사용 편의성과 풍부한 라이브러리 지원으로 인해 이러한 영역에서 선호하는 도구가됩니다.

과학 컴퓨팅에서 Python의 응용 프로그램에는 데이터 분석, 머신 러닝, 수치 시뮬레이션 및 시각화가 포함됩니다. 1.numpy는 효율적인 다차원 배열 및 수학적 함수를 제공합니다. 2. Scipy는 Numpy 기능을 확장하고 최적화 및 선형 대수 도구를 제공합니다. 3. 팬더는 데이터 처리 및 분석에 사용됩니다. 4. matplotlib는 다양한 그래프와 시각적 결과를 생성하는 데 사용됩니다.

웹 개발에서 Python의 주요 응용 프로그램에는 Django 및 Flask 프레임 워크 사용, API 개발, 데이터 분석 및 시각화, 머신 러닝 및 AI 및 성능 최적화가 포함됩니다. 1. Django 및 Flask 프레임 워크 : Django는 복잡한 응용 분야의 빠른 개발에 적합하며 플라스크는 소형 또는 고도로 맞춤형 프로젝트에 적합합니다. 2. API 개발 : Flask 또는 DjangorestFramework를 사용하여 RESTFULAPI를 구축하십시오. 3. 데이터 분석 및 시각화 : Python을 사용하여 데이터를 처리하고 웹 인터페이스를 통해 표시합니다. 4. 머신 러닝 및 AI : 파이썬은 지능형 웹 애플리케이션을 구축하는 데 사용됩니다. 5. 성능 최적화 : 비동기 프로그래밍, 캐싱 및 코드를 통해 최적화
