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

ikfrs5lh  于 2022-11-13  发布在  PHP
关注(0)|答案(1)|浏览(211)

我试图创建一个WordPress的PHP连接到replicate.com上的一个稳定的扩散模型。它似乎工作,但当我添加一个初始化图像的处理不会开始。实际上,它停止在“状态:starting”,没有输出提示。我可以在replicate Dashboard上看到我的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);
k4emjkb1

k4emjkb11#

你的卷发是在做你要求它做的事情。
这是服务器将看到的内容:

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数据可能需要(也可能不需要)使用PHP的urlencode()函数进行URL编码。
您正在进行HTTPS发布,因此您可能需要(也可能不需要)这些信息,但请求不安全,服务器可能会拒绝它。

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

相关问题