[英]How do i send image in php cUrl to api
我正在尝试创建一个 wordpress php 连接到 replicate.com 上的稳定扩散 model。 它似乎有效,但是当我添加一个初始图像时,处理将不会开始。 实际上它在“状态:开始”时停止,没有 output 提示。 我可以在复制仪表板上看到我的 api 预测中的图像,但我认为图像并未真正上传。 当我单击“Tweek”并替换图像时它起作用了。 我在这里做错了什么?
curl_setopt($resource, CURLOPT_URL, 'https://api.replicate.com/v1/predictions');
curl_setopt($resource, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($resource, CURLOPT_POST, 1);
$data = array(
'version' => '56f26876a159c10b429c382f66ccda648c1d5678d7ce15ed010734b715be5ab9',
'input' => array(
'prompt' => 'circles',
'init_image' => 'https://example.com/wp-content/uploads/img.jpg'
)
);
curl_setopt($resource, CURLOPT_POSTFIELDS, json_encode($data));
$headers = array();
$headers[] = 'Authorization: Token njdscknjk3nkjn32nk3jn3j';
$headers[] = 'Content-Type: application/json';
curl_setopt($resource, CURLOPT_HTTPHEADER, $headers);
$output = curl_exec($resource);
你 curl 正在做你要求它做的事情。
这是服务器将看到的内容:
Content-Length: 174
Content-Type: application/json
Accept: */*
BODY=
{"version":"56f26876a159c10b429c382f66ccda648c1d5678d7ce15ed010734b715be5ab9","input":{"prompt":"circles","init_image":"https:\/\/example.com\/wp-content\/uploads\/img.jpg"}}
您正在传输图像 url 而不是图像。 尝试这个:
$image = base64_encode(file_get_contents('https://example.com/wp-content/uploads/img.jpg'));
'init_image' => $image;
图片可能还需要加上前缀: 'data:[<mediatype>][;base64],<data>'
$image = 'data: image/jpeg;base64,' . base64_encode(file_get_contents('https://example.com/wp-content/uploads/img.jpg'));
并且 base64 数据可能(或可能不需要)是 URL,用 PHP 的urlencode()
function 编码。
你正在做一个 HTTPS 的帖子,所以你可能(或可能不需要)这些但请求不安全并且服务器可能会拒绝它。
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.