我正在尝试读取一个zip文件并且它正常工作。现在我想获取zip文件的内容(图像)。但图像是扭曲的...这是我的代码片段:
while ($zip_entry = zip_read($zip))
{
echo "<p>";
echo "Name: " . zip_entry_name($zip_entry) . "<br />";
if (zip_entry_open($zip, $zip_entry))
$contents = zip_entry_read($zip_entry);
$name=zip_entry_name($zip_entry);
file_put_contents('uphoto/'.$i.'.jpg',$contents);
}
答案 0 :(得分:1)
您可以尝试创建新图片:
$i = 0;
while ($zip_entry = zip_read($zip))
{
$content = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
$image = imagecreatefromstring($content);
$filename = 'uphoto/'.$i++.'.jpg';
imagejpeg($image, $filename);
imagedestroy($image);
echo '<img src="data:image/jpeg;base64,' . base64_encode($content) . '"><br />';
}
我使用zip_entry_filesize()来定义使其正常工作所需的内容大小。
答案 1 :(得分:0)
当你插入&lt;它不会工作br /&gt;在您的图像数据中。您无法通过回显其内容在网页上显示图像。你应该对它进行base64编码,并将其放在img标签中。然后你可以做类似的事情:
echo '<img src="data:image/jpeg;base64,' . base64_encode($content) . '"><br />';
答案 2 :(得分:0)
base64_decode可以解决这个问题吗?未经测试:
$i = 0;
while ($zip_entry = zip_read($zip))
{
echo "<p>";
echo "Name: " . zip_entry_name($zip_entry) . "<br />";
if (zip_entry_open($zip, $zip_entry))
$contents = base64_decode(zip_entry_read($zip_entry));
$name=zip_entry_name($zip_entry);
$filename = 'uphoto/'.$i++.'.jpg';
file_put_contents($filename,$contents);
echo '<img src="' . $filename . '">';
}