function showimage($zip_file, $file_name) {
if (file_exists($zip_file)) {
$zip = zip_open($zip_file);
while ($zip_entry = zip_read($zip)) {
if (zip_entry_open($zip, $zip_entry, "r")) {
if (zip_entry_name($zip_entry) == $file_name) {
$theimg = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
$theimg = imagecreatefromstring($theimg);
if ($theimg !== false) {
header('Content-Type: image/jpeg');
imagejpeg($theimg);
imagedestroy($theimg);
}
else { echo "Could not create image."; }
zip_entry_close($zip_entry);
}
}
else { echo "Could not open."; }
}
zip_close($zip);
}
else { echo "File not found."; }
}
この関数を実行して指定された zip ファイルを開き、コンテンツをループして指定されたファイル名を見つけ、そのファイルから抽出する必要なくイメージを作成しています。私は、このプロセスがどのようにシステム集約的であるか、また、ループして名前が指定されたファイル名と一致するかどうかを確認する必要なく、zip アーカイブ内のファイルを見つけるためのよりきちんとした/より直接的な方法があれば、ちょっと興味がありました。ファイルが存在すると仮定して、指定された名前のzipファイルから直接ファイルを呼び出す方法はありますか?
上記のコードは機能します...私はそれをより良くする方法を見ようとしているだけだと思います。それが理にかなっていれば。