Как записать изображение из zip-архива в файл с PHP - PullRequest
0 голосов
/ 05 сентября 2011

Я пытаюсь извлечь изображение из zip-архива, а затем записать его в файл.По сути, мой код выглядит примерно так (некоторые биты были удалены):


      while($zip_data = zip_read($zip))
       {
        $tfile = zip_entry_name($zip_data);
        if((substr($tfile, -11)  == "_screen.png") && (substr($tfile, 0, 8) == "template"))
         { 
          $screen = zip_entry_read($zip_data);
          $screen_name = $tfile;
         } 
        zip_entry_close($zip_data); 
       }

Я успешно получил изображение внутри экранной переменной.Тем не менее, я не знаю, как записать в файл изображения: |

Я попытался с file_put_contents, и он генерирует пустое изображение, которое имеет правильный размер, но все остальное пусто.Я также попытался с


    $screen_im = imagecreatefromstring($screen) 

, а затем записал screen_im с imagepng в путь, но все равно не повезло.Я действительно не знаю, что делать сейчас.Простое распаковывание архива - не совсем то, что мне нужно, и, поскольку я, кажется, правильно читаю изображение из архива, должен быть способ записать его в новое изображение

Любая помощь с этим была бы действительно оценена1011 *

Ответы [ 2 ]

2 голосов
/ 05 сентября 2011

Вы не указываете длину для чтения, поэтому только начальные данные читаются.From zip_entry_read doc :

string zip_entry_read ( resource $zip_entry [, int $length ] )

length - количество возвращаемых байтовЕсли не указано, эта функция будет пытаться прочитать 1024 байта.

Вы должны указать длину файла, чтобы он читался до конца, а не только в первом КБ.Или, если файл очень большой, вы должны использовать цикл и fwrite

1 голос
/ 05 сентября 2011

file_put_contents должно работать.Если вы откроете полученный файл, скажем, в Блокноте, как он будет выглядеть?И как это выглядит, если вы вручную извлекаете его из zip-архива?

...