亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 PHP 中解壓二進制數據

在 PHP 中解壓二進制數據

PHP
MM們 2023-08-19 10:44:13
我正在使用第三方 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沒有返回你所期望的。


查看完整回答
反對 回復 2023-08-19
  • 1 回答
  • 0 關注
  • 137 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號