如何使用PHP将图像从zip存档写入文件

时间:2011-09-05 09:05:08

标签: php image unzip

我正在尝试从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) 

然后将带有imagepng的s​​creen_im写入路径但仍然没有运气。 我现在真的不知道该怎么做。简单地解压缩存档并不是我需要的,因为我似乎正确地从存档中读取图像,应该有一种方法将其写入新图像

任何有关这方面的帮助都是非常准确的

2 个答案:

答案 0 :(得分:2)

您没有指定要读取的长度,这就是为什么只读取初始数据。来自zip_entry_read doc

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

length - 要返回的字节数。如果未指定,此函数将尝试读取1024个字节。

您应该提供文件的长度,以便在最后读取它,而不仅仅是第一个KB。或者,如果文件非常大,则应使用循环fwrite

答案 1 :(得分:1)

file_put_contents应该有效。如果您在记事本中打开生成的文件,它看起来像什么?如果你从zip存档中手动提取它会是什么样子?