繁体   English   中英

如何将 php cUrl 中的图片发送到 api

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM