使用 curl 库发送 multipart/form-data post 请求,将图片文件作为字段值上传至 h3-image api 接口。调用时需指定 image 参数为文件路径或资源句柄,并附带 prompt 描述修改要求,api 会返回处理后的新图片 url 或二进制流。

cURL 如何构造文件上传请求体
通过 CURLOPT_POSTFIELDS 设置关联数组,键名对应表单字段,值为以 @ 开头的文件路径字符串(PHP 5.5+ 推荐使用 CURLFile)。此操作会自动生成正确的 Content-Type 和边界符,无需手动拼接二进制数据。

$ch = curl_init('https://api.h3-image.com/v1/modify');
$file = new CURLFile('/path/to/reference.jpg', 'image/jpeg', 'reference.jpg');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => [
'image' => $file,
'prompt' => 'remove the background and make it transparent'
],
CURLOPT_RETURNTRANSFER => true
]);
$response = curl_exec($ch);
curl_close($ch);
如何解析并保存返回的图片数据
API 响应通常为 JSON 格式,包含 result_url 字段指向新图片地址,或直接返回二进制图片流。需检查 HTTP 状态码确认成功,随后使用 file_put_contents() 将内容写入本地文件或通过 URL 下载保存。

$data = json_decode($response, true);
if (isset($data['result_url'])) {
$newImage = file_get_contents($data['result_url']);
file_put_contents('modified_output.png', $newImage);
} else {
// 假设直接返回二进制流
file_put_contents('modified_output.png', $response);
}
当 prompt 包含特殊字符时如何处理编码
在 prompt 字段中若包含中文、标点或换行符,cURL 会自动进行 URL 编码。但若手动构建请求体或使用其他 HTTP 客户端,需确保字符串符合 UTF-8 编码,并对空格等特殊字符进行转义,否则 API 可能无法正确解析修改指令。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











