我正在尝试用PHP读取3MB文件。我使用fopen来获取句柄,然后阅读它。但是当我在读取~1 / 2文件后调用fread时,它会停止读取,并且我的解包函数会抛出一个错误,说它有0个字节。有什么想法吗?
这是我的二进制阅读功能:
function binaryReadUShort($f){
return unpack("S",fread($f,4))[1];
}
这是读取高度图的代码。 $ fh是文件句柄。
for($y = 0; $y < $size; $y++){
for($x = 0; $x < $size; $x++){
$height = binaryReadUShort($fh);
$height = $height / 65535;
$height = $height * 255;
$color_alloc = imagecolorallocate($img,$height,$height,$height);
imagesetpixel($img,$x,$y,$color_alloc);
}
}
此外,filesize()返回文件中正确的字节数,我做了一个测试,其中我计算了我正在阅读的字节数。我确认我没有尝试阅读文件的末尾。
答案 0 :(得分:1)
如果没有进一步的信息,我认为最好的猜测是你想要读取2字节的无符号短路 - &gt;
fread($f,2)