我正在使用第三方 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 关注
- 104 浏览
添加回答
举报
0/150
提交
取消