使用OpenAI PHP库调用DALL-E遇格式错误:如何提供RGBA PNG?
问题描述
在DALL-E示例项目中引入Orhanerday\OpenAi库后,调用图片编辑接口时出现错误:
Invalid input image - format must be in ['RGBA'], got RGB.
使用的PHP代码如下:
<?php require __DIR__ . '/vendor/autoload.php'; // 若使用PHP框架可移除该行 use Orhanerday\OpenAi\OpenAi; $open_ai_key = getenv("OPENAIKEY"); $open_ai = new OpenAi($open_ai_key); $otter = curl_file_create("C:\Users\dotor\OneDrive\Desktop\dalle-examples\otter.png"); $mask = curl_file_create("C:\Users\dotor\OneDrive\Desktop\dalle-examples\mask.png"); $result = $open_ai->imageEdit([ "image" => $otter, "mask" => $mask, "prompt" => "A cute baby sea otter wearing a beret", "n" => 2, "size" => "256x256", ]); var_dump($result);
使用的PNG文件:
- otter.png:

- mask.png:

需要解决错误实现无错误运行,同时了解什么是RGBA PNG文件,以及如何正确提供符合要求的图片。
什么是RGBA PNG文件
PNG格式图片按颜色通道分为不同类型:
- RGB:仅包含红(Red)、绿(Green)、蓝(Blue)三个颜色通道,只记录色彩信息。
- RGBA:在RGB基础上新增Alpha通道,该通道用于控制图片透明度(取值范围0-255,从完全透明到完全不透明)。DALL-E图片编辑接口要求图片必须包含Alpha通道,这样才能正确识别可编辑的透明区域(尤其是mask图)。
如何正确提供符合要求的图片
1. 将现有PNG转换为RGBA格式
可通过图形工具或命令行工具完成转换:
方法1:图形界面工具(Photoshop、GIMP、Paint.net等)
- 打开目标图片,导出/保存时选择PNG格式,勾选“保留Alpha通道”选项。
- 对于mask图,需确保透明区域通过Alpha通道实现,而非白色或其他颜色(DALL-E会将mask图的透明区域视为可编辑区域)。
方法2:命令行工具(ImageMagick)
安装ImageMagick后,执行以下命令:
# 转换otter.png为RGBA格式 convert otter.png -alpha on otter_rgba.png # 转换mask.png为RGBA格式 convert mask.png -alpha on mask_rgba.png
2. 修改代码使用转换后的图片
将代码中的文件路径替换为转换后的RGBA格式图片路径:
$otter = curl_file_create("C:\Users\dotor\OneDrive\Desktop\dalle-examples\otter_rgba.png"); $mask = curl_file_create("C:\Users\dotor\OneDrive\Desktop\dalle-examples\mask_rgba.png");
额外注意事项
- mask图的尺寸必须与原始图片完全一致,否则会触发错误。
- 确保图片文件无损坏,且文件路径正确(Windows路径可使用正斜杠
/避免转义问题)。
内容的提问来源于stack exchange,提问作者ORHAN ERDAY
相关产品推荐
相关产品推荐

