如何通过Web URL调用OpenAI的createImageVariation接口
能否通过Web URL调用OpenAI的createImageVariation接口?
OpenAI的createImageVariation接口不支持直接传入Web URL,它要求必须提供本地文件的可读流(或二进制文件数据),这也是官方文档只给出本地文件调用示例的原因。
要实现用远程URL的图片生成变体,你需要先把远程图片下载到本地(或内存中),转换成符合要求的可读流后再传入接口。
具体实现示例(Node.js)
可以使用node-fetch库下载远程图片,将其转换为Buffer后再生成可读流:
const openai = require('openai'); const fetch = require('node-fetch'); const { Readable } = require('stream'); // 初始化OpenAI客户端 openai.apiKey = '你的API密钥'; async function createVariationFromRemoteUrl(imageUrl) { // 下载远程图片 const response = await fetch(imageUrl); if (!response.ok) throw new Error('下载图片失败'); // 将图片Buffer转换为可读流 const imageBuffer = await response.buffer(); const imageStream = Readable.from(imageBuffer); // 给流添加filename属性,OpenAI需要识别文件格式 imageStream.path = 'image.png'; // 调用createImageVariation接口 const variationResponse = await openai.createImageVariation( imageStream, 1, '1024x1024' ); return variationResponse.data.data[0].url; } // 调用示例 createVariationFromRemoteUrl('https://res.cloudinary.com/doi0newyy/image/upload/v1675088907/llqivxedybyi0gzuf4x9.png') .then(url => console.log('生成的变体图片URL:', url)) .catch(err => console.error('出错:', err));
注意事项
- 远程图片必须是PNG格式,尺寸为1024x1024,文件大小不超过4MB,符合OpenAI的接口要求。
- 确保你使用的OpenAI库版本支持传入Buffer转换的可读流(当前最新版本是兼容的)。
内容的提问来源于stack exchange,提问作者Johnny Kang
相关产品推荐
相关产品推荐

