首页 > 解决方案 > 如何在浏览器上显示来自 API 的原始 png 响应?

问题描述

我尝试使用Curl在我的浏览器上显示来自api的原始png图像,以下是我尝试过的;但我收到黑色图像,中间有一个小方块。但是当我在邮递员上使用相同的网址时,图像会正确显示。请协助,查看我的代码,看看我做错了什么。此外,我尝试检查图像/png 响应的原始响应,但它没有给出相同的东西,我尝试搜索其他内容,但没有给出任何内容。


$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => "https://url",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "GET",
    CURLOPT_HTTPHEADER => array(
        "Accept: application/json",
        "Authorization: Bearer xxxxxxxxxx"
    ),
));

$response= curl_exec($curl);

curl_close($curl);


$size = filesize($response);
header("Content-length: $size"); 
header("Content-Type: image/png"); 
//header('Content-Disposition: attachment; filename ="image.png"');
header('Content-Disposition: inline; filename="image.png"');
$png= file_put_contents("image.png", $response);


echo $response; gives this     ����JFIF���� ICC_PROFILE mntrRGB XYZ acspAPPL���- desc�|cprtx(wtpt�bkpt�rXYZ�gXYZ�bXYZ�rTRCgTRCbTRCdesc"Artifex

在 var_dump($response); 我收到一个这种类型的字符串

string(64086) "�PNG  IHDR� ����,bKGD���̿ pHYs��U[��tIME�2�b��IDATx���-��L�������J��JNYղ���:V�uDVY���`떗^�Һ�`�����Bv�;���#�kO2��p�0/��O���.ψ�`,...

我在这个链接上有原始数据:https ://pastebin.com/Q5rNu6dX

string(198663) "�PNG IHDRm ��1Џ &iCCPiccH���gP�Y���<�@B�PC�*%��Z(ҫ�@�PEl��+��4E�E\� "kE��t�,ʺqQAYp���?���{�o�s��s��p ��e��{bR���Ɏ��(������t�ջ ��{������i�常�r�)�t��e��JOY��L���gWX�\�2�X��y�Kο,�����]~

标签: phpjquerycurlpng

解决方案


推荐阅读