#659·IOPaint

[BUG] UnicodeDecodeError 编解码器无法解码第 127 位的字节 0x89: 无效的开始字节

作者: vladichumachenko创建于 2025年6月10日更新于 2025年6月10日
标签bug

** 模式** 拉玛

** 描述错误** 在使用卷曲或Python请求向有效的PNG文件(图像和口罩)端点发送 POST 请求时,服务器会返回一个使用 UnicodeDecodeError 的 HTTP 500 内部服务器出错:"utf-8"编码器无法在位置135中解码字节0x89:无效的起始字节. 此错误持续地发生,甚至在将掩码转换为二进制(1-bit grayscale)格式后也是如此. 这个问题似乎与FastAPI试图在错误处理过程中将二进制PNG数据解码为UTF-8文本有关,可能是由于多部分形式数据处理中的验证或例外处理不当.

重现步骤:

`Python-m iopaint起动-device cpu-model lama-host 0.0.0.0'

发送带有有效的 PNG 文件的多段窗体数据请求 :

“ curl – F” 图像QQ4. png; type=image/png” - F'mask mask check binary.png; type=image/png” http://192.168.251.81:8080/api/v1/inpaint - output demot.png'

查看 HTTP 500 响应, 演示出以下错误. png

QQ"error":"UnicodeDecodeError","detail","body":"errors":""utf-8"编码器在135位无法解码为字节0x89:无效起取字节".

预期行为 服务器应当处理印入请求并返回一个处理过的图像作为PNG文件.

实际行为 服务器用 UnicodeDecodeError 返回一个 HTTP 500 错误, 表示无法正确处理二进制 PNG 数据 。

** 枪声**

<img宽=""837" alt="Image" src="https://GitHub.com/user-attachments/assets/3ff2478b-2a37-4223-b0b-68c6ea7dc9fc"/".

** 系统信息** 平面: 1.6.0 烟花: 2.7.1 CUDA: N/A(运行在CPU上) 详细情况: ZZ: 3.11.2

平台:Debian GNU/Linux 12 其他依存关系: 火炬瞄准镜:0.22.1 枕头: 9.5.0 扩散器: 0.27.2 变压器: 4.48.3 opencv-Python: 4.11.086 (中文(简体) ). 加速: 1.7.0

文件: 4. png :
PNG 图像, 1500x1013, 8- bit/ color RGB

'文件: mask check binary. png: PNG 图像, 1500x1013, 1位灰度 (a). (转换后使用转换口罩 check.png-阈值为50%口罩 check binary.png).

如果我使用网页http://192.168.251.81:80-是万事俱备。

<img宽="927" alt="Image" src="https://GitHub.com/user-attachments/assets/067c3751-2777-422a-9b34-bf466579cd89"/">"

内容来源: Sanster/IOPaint