アニメーション GIF の最初のフレームのみを PNG に表示して、サムネイルとして使用しようとしています。私は現在、このコードを持っています:
<?php
function myImageCreateFromGif($file_or_url) {
$dummy_file = "/tmp/dummy.gif";
# if this is a url, use fopen to get the file data, then
# save it to a dummy file
if (preg_match("/(http|ftp):\/\//i", $file_or_url)) {
# open the file using fopen, which supports remote URLs
$input = fopen($file_or_url, "rb");
# read the contents of the file
# will accept files up to 10Mb, but will probably get
# and EOF before that, we have to do it this way because
# filesize isn't designed to work with URLs. sigh.
$image_data = fread($input, 10000000);
fclose($input);
# write the contents to a dummy file
$output = fopen("$dummy_file", "wb");
fwrite($output, $image_data);
fclose($output);
# create the gif from the dummy file
$image = ImageCreateFromGif($dummy_file);
# get rid of the dummy file
unlink($dummy_file);
}
# if it's not a URL, we can simply open the image directly
else {
$image = ImageCreateFromGif($file_or_url);
}
if ($image) { return $image; }
else { return 0; }
}
$image = "http://i.imgur.com/".$_GET["i"].".gif";
$img = myImageCreateFromGif($image);
if($img) {
header("Content-Type: image/png");
ImagePNG($img);
ImageDestroy($img);
}
?>
これは問題なく動作しますが、GIF は PNG になる前に完全に読み込まれないため、ページは、GIF がまったく読み込まれなかった場合に破損した画像を返すか、部分的に読み込まれた GIF を返します。読み込みに成功しました。では、PNGにする前にGIFを完全にロードするにはどうすればよいですか?