Dall E API错误:”无效的输入图像 – 格式必须是[‘RGBA’, ‘LA’, ‘L’]中的一种,当前为RGB。”

我从AWS S3存储桶中获取了一张图片,然后将其传递给Dall E/OpenAI API。当我尝试时,得到的错误响应是:

message: "Invalid input image - format must be in ['RGBA', 'LA', 'L'], got RGB.",

我了解到RGB(我试图上传的图像文件类型)包含一个alpha通道,这意味着图像上有透明区域。在将图像发送到API之前,是否可以/容易在NodeJS中验证图像类型以捕获不良图像?

我的S3获取.png文件的方式如下:

    const data = await s3Client.send(      new GetObjectCommand({        ...bucketParams, // Bucket: <bucket name>        Key: `public/dalle/${inputParams.Key}`,      })    );

然后我通过openai库将数据传递给API:

    const response = await openai.createImageEdit(      data.Body as unknown as File,      (maskImageBuffer as unknown as File) || data.Body,       prompt,      1,      "256x256"    );

回答:

你可以使用Jimp

  let jImage = await Jimp.read(ImageBuffer);  const w = jImage.bitmap.width;   const h = jImage.bitmap.height;  if ((w / h) != 1) {    throw new functions.https.        HttpsError("invalid-argument",            "图像必须是正方形。当前比例 = " + (w/h));  }  if (!jImage.hasAlpha()) { //检查图像是否有透明度    jImage = jImage.opacity(1); //如果没有则添加   }  const jsize = (await jImage.getBufferAsync(Jimp.AUTO)).byteLength;  if (jsize >= 4000000) { //检查大小    throw new functions.https.        HttpsError("invalid-argument",            "图像必须小于4MB,当前图像大小为 " +           jsize + " 字节,包含Alpha通道");  }  jImage.write("/tmp/fileName.png"); //生成PNG

https://www.npmjs.com/package/jimp

https://www.tutorialspoint.com/how-to-change-the-opacity-of-an-image-in-node-jimp

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注