File size: 1,799 Bytes
7cbb5f2
 
 
 
 
6305cff
 
4d69588
7cbb5f2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4d69588
 
6b323fa
1b7fe97
 
1d51385
6172e67
20991a6
6172e67
 
 
 
 
7cbb5f2
6172e67
6b323fa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import base64
from io import BytesIO
import os
from mistralai import Mistral
import re
from PIL import Image


api_key = os.getenv("MISTRAL_API_KEY")
Mistralclient = Mistral(api_key=api_key)

def encode_image(image_path):
    """Encode the image to base64."""
    try:
        # 打开图片文件
        image = Image.open(image_path).convert("RGB")

        # 将图片转换为字节流
        buffered = BytesIO()
        image.save(buffered, format="JPEG")
        img_str = base64.b64encode(buffered.getvalue()).decode("utf-8")

        return img_str
    except FileNotFoundError:
        print(f"Error: The file {image_path} was not found.")
        return None
    except Exception as e:  # 添加通用异常处理
        print(f"Error: {e}")
        return None

def feifeichat(image):
    model = "pixtral-large-2411"
    # Define the messages for the chat
    messages = [{
        "role":
        "user",
        "content": [
            {
                "type": "text",
                "text": "用英文详细描述下"
            },
            {
                "type": "image_url",
                "image_url": f"data:image/jpeg;base64,{base64_image}",
            },
        ],
    }]


    partial_message = Mistralclient.chat.stream(model=model, messages=messages):
    return partial_message


with gr.Blocks() as demo:
    gr.Markdown("Florence-2 Image To Flux Prompt")
    with gr.Tab(label="Image To Flux Prompt"):
        with gr.Row():
            with gr.Column():
                input_img = gr.Image(label="Input Picture",height=480)
                submit_btn = gr.Button(value="Submit")
            with gr.Column():
                output_text = gr.Textbox(label="Output Text")


        submit_btn.click(feifeichat, [input_img], [output_text])

demo.launch()