Flutter集成Replicate GFPgan API遇422错误:图片参数传递失败
在Flutter中正确传递GFPGAN API的图片参数
正确的两种传参方式
Replicate的GFPGAN API要求img参数必须是公开可访问的HTTP/HTTPS URL,或者格式正确的Data URI,以下是具体实现:
方式1:使用公开图片URL
将图片上传到支持公开访问的存储服务(如Firebase Storage、Cloudinary等),获取HTTP/HTTPS链接后直接传入:
final predictionUrl = 'https://api.replicate.com/v1/predictions'; final predictionData = { 'version': modelVersion, 'input': {'img': 'https://your-public-host.com/your-image.jpg'}, };
方式2:构造正确的Data URI
如果不想依赖外部存储,可以将图片编码为符合规范的Data URI,注意必须指定正确的图片MIME类型(如image/png或image/jpeg):
// 读取本地图片文件字节 final fileBytes = await imageFile.readAsBytes(); // 构造Data URI,替换为对应图片的MIME类型 final imgDataUri = 'data:image/png;base64,${base64Encode(fileBytes)}'; // 构造请求体 final predictionData = { 'version': modelVersion, 'input': {'img': imgDataUri}, };
注意:如果是JPG/JPEG格式图片,将
image/png替换为image/jpeg。
你之前的错误原因
- 本地
file://路径:Replicate服务器无法访问你的本地文件系统,不符合API要求的URI格式 - 直接传递base64字符串:API要求的是URI格式,纯base64字符串无法被识别
- 错误构造Data URI:你之前使用
application/octet-stream作为MIME类型,API无法识别为图片,导致验证失败
内容的提问来源于stack exchange,提问作者Prashant Rajput
相关产品推荐
相关产品推荐

