Я пытаюсь прочитать 3 МБ-файл в PHP. Я использую fopen, чтобы получить дескриптор, и fread, чтобы прочитать его. Но когда я вызываю fread после чтения ~ 1/2 файла, он перестает читать, а моя функция распаковки выдает ошибку, говоря, что она получает 0 байт. Есть идеи?PHP fopen не получает весь файл
Это моя бинарная функция чтения:
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);
}
}
Кроме того, размер файла() возвращает правильное количество байтов в файле, и я сделала тест, в котором я насчитал байты, которые я читал. Я подтвердил, что НЕ пытаюсь прочитать конец файла.
Как вы открываете файл? Можете ли вы добавить этот код и к своему вопросу? – Cristik
'ReadUShort/fread (.., 4)' - Короткий, состоящий из 4 байтов, вы абсолютно уверены в этом? – VolkerK
попробуйте 'Q' как первый параметр' unpack'? –