php - 如何在浏览器上显示来自 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ο,�����]~
解决方案
推荐阅读
- matlab - Matlab中的数据分析
- javascript - HTML 视频中的视频略读
- javascript - 我可以通过设置 _idleTimeout 成员来更改 setTimer 对象的超时值吗?
- vue.js - 更改 Vuetify 中列表项的背景颜色
- arrays - 我们如何将向量添加到矩阵的单列?
- google-bigquery - 如何在 BigQueryOperator 上参数化 write_disposition?
- angular - 不推荐使用 NgModuleFactoryLoader 的升级路径
- angular - TypeError:无法读取未定义的属性“nativeElement”——在 ngAfterViewChecked
- directory - 设置哈巴狗包含不编译
- vue.js - 出错时显示替代图片。Laravel - vue.js