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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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