我正在使用第三方 API,它允許我通過 POST 請求上傳圖像,并且參數需要采用二進制格式,例如[137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,3,...]我嘗試使用該unpack()函數并獲取要上傳的二進制數據,但是當我嘗試在上傳服務器上查看它時,我只得到一個空白圖像,但圖像大小是正確的。所以我認為數據就在那里,我只是在解壓時做錯了什么。 if(!$fp = fopen ($image_url, 'rb')) return 0; /* Read bytes from the top of the file */ if(!$data = fread ($fp, filesize($image_path))) return 0; /* Unpack data */ $data = unpack ('C*', $data); //$data value: Array ( [1] => 137 [2] => 80 [3] => 78 [4] => 71 [5] => 13....為了測試它是否能正確轉換回圖像,我使用pack()如下函數: $bin = pack('C*', ...$data); header('Content-type: image/png'); header('Content-Disposition: inline; filename="test_image"'); header('Content-Transfer-Encoding: binary'); echo $bin; exit();因此,這將輸出一個空白的 png 文件,但其大小與原始圖像完全相同。有沒有辦法修復解包函數,使其能夠正確轉換回來?我無法控制如何顯示它,因為它是在第三方 API 中,所以我只能在第一個代碼塊上更正它。
1 回答

精慕HU
TA貢獻1845條經驗 獲得超8個贊
我對你正在做的事情做了一些修改,這對我有用:
$data = file_get_contents('test.png');
$u = unpack('C*', $data);
$bin = pack('C*', ...$u);
header('Content-type: image/png');
echo $bin;
exit();
我的假設是你的fopenandfread沒有返回你所期望的。
- 1 回答
- 0 關注
- 137 瀏覽
添加回答
舉報
0/150
提交
取消