
    i                        d dl mZmZ d dlmZ d dlmZ d dlZd dlZ ed          Z	ddZ
e	                    d	          d
             Ze	                    d          d             Ze	                    d          d             Ze	                    d          defd            Zedk    rd dlZ ej        e	dd           dS dS )    )FastAPIResponse)StreamingResponse)ImageNzInference API)title   c                 4   |>t          j        dd          t          j        dd          t          j        dd          f}t          j        d| |f|          }t	          j                    }|                    |d           |                    d           |S )u   生成纯色占位图Nr      RGBPNG)format)randomrandintr   newioBytesIOsaveseek)widthheightcolorimgimg_byte_arrs        %/home/ubuntu/fastapi_inference/app.pygenerate_placeholder_imager   	   s    } N1c""N1c""N1c""
 )EE6?E
2
2C :<<LHH\%H(((a    /c                     K   ddgdS )NzFastAPI Inference Service
/inference)message	endpoints r"   r   r   rootr#      s      2,PPPr   r   c                     K   g } t          d          D ]3}g d}t          dd||                   }|                     |           4t          | d                                         dddd	
          S )u   
    模拟推理接口，返回 3 张纯色占位图
    返回包含 3 张图片的响应（使用 multipart 或使用 JSON 返回 base64）
    这里使用多次返回的方式，实际中可以打包成 zip 或分别返回
       r
   d   r(   r(   r
   r(   r(   r(   r
   r   r   r   r   r   	image/png31)zX-Image-CountX-Image-Indexcontent
media_typeheaders)ranger   appendr   getvalue)imagesicolors	img_bytess       r   	inferencer;       s       F1XX ! !
 
 

 /)
 
 
	
 	i     q	""$$"%<<   r   z/inference/allc            	      n  K   ddl } g }dddddddd	dg}t          |          D ]\  }}t          d
d
|d                   }|                     |                                                              d          }|                    |dz   |d         |d         |dd         dz   d           d|dS )u)   返回所有 3 张图片的 base64 编码r   Nredr'   )namergbgreenr)   bluer*   r   r?   r+   zutf-8   r>   r(   z...)index
color_name	color_rgbimage_base64r%   )countr7   )base64	enumerater   	b64encoder6   decoder5   )rH   resultsr9   r8   
color_infor:   
img_base64s          r   inference_allrO   ?   s	      MMMG//1100F #6**  :.U#
 
 
	
 %%i&8&8&:&:;;BB7KK
U$V,#E*&tt,u4	
 
 	 	 	 	 '***r   z/inference/{index}rC   c                    K   | dk     s| dk    rddiS g d}t          dd|| dz
                     }t          |                                dd	t          |           i
          S )u$   根据索引返回特定图片 (1-3)rB   r%   errorzIndex must be between 1 and 3r&   r   r+   r,   r/   r0   )r   r   r6   str)rC   r9   r:   s      r   inference_by_indexrS   [   s       qyyEAII899  F +UQY  I ""$$ #e**-   r   __main__z0.0.0.0i@  )hostport)r   r   N)fastapir   r   fastapi.responsesr   PILr   r   r   appr   getr#   r;   rO   intrS   __name__uvicornrunr"   r   r   <module>r`      sd   % % % % % % % % / / / / / /       				 gO$$$   & Q Q Q   < 	+ + +6 	C    . zNNNGK)$////// r   