我正在使用第三方 API,它允許我通過(guò) POST 請(qǐng)求上傳圖像,并且參數(shù)需要采用二進(jìn)制格式,例如[137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,3,...]我嘗試使用該unpack()函數(shù)并獲取要上傳的二進(jìn)制數(shù)據(jù),但是當(dāng)我嘗試在上傳服務(wù)器上查看它時(shí),我只得到一個(gè)空白圖像,但圖像大小是正確的。所以我認(rèn)為數(shù)據(jù)就在那里,我只是在解壓時(shí)做錯(cuò)了什么。 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....為了測(cè)試它是否能正確轉(zhuǎn)換回圖像,我使用pack()如下函數(shù): $bin = pack('C*', ...$data); header('Content-type: image/png'); header('Content-Disposition: inline; filename="test_image"'); header('Content-Transfer-Encoding: binary'); echo $bin; exit();因此,這將輸出一個(gè)空白的 png 文件,但其大小與原始圖像完全相同。有沒(méi)有辦法修復(fù)解包函數(shù),使其能夠正確轉(zhuǎn)換回來(lái)?我無(wú)法控制如何顯示它,因?yàn)樗窃诘谌?API 中,所以我只能在第一個(gè)代碼塊上更正它。
1 回答

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