2010-07-31 73 views
2

我需要在PHP中將動畫GIF轉換爲靜態。我的意思是使用其第一幀。任何想法如何做到這一點?如何將動畫GIF轉換爲PHP中的靜態?

+0

可以使用的ImageMagick ,還是隻有gd? – JAL 2010-07-31 23:49:56

+0

到目前爲止,你有什麼嘗試? – Charles 2010-07-31 23:51:35

回答

4

「剝離」的動畫GIF可以做到通過將其轉換爲另一種格式和然後再回來。對於這種「其他格式」,PNG是一個很好的候選者,因爲它不像JPEG那樣是無損的。使用PHP的GD功能,並輸出PNG代替GIF:

header('Content-type: image/png'); 
imagepng(imagecreatefromgif($file)); 

這可能工作(沒有測試)如果PHP/GD不支持GIF動畫(我不認爲它);並且它會輸出GIF格式的圖像,不像上面的代碼片段:

header('Content-type: image/gif'); 
imagegif(imagecreatefromgif($file)); 

如果這是行不通的,而在GIF格式的輸出是必不可少的,這將:

$img1 = imagecreatefromgif($file); 
$size = getimagesize($img1); 
$img2 = imagecreatetruecolor($size[0], $size[1]); 
imagecopy($img2, $img1, 0, 0, 0, 0, $size[0], $size[1]); 
header('Content-type: image/gif'); 
imagegif($img2); 
2

我能想到的(不是很可愛的),最好的辦法是將GIF轉換成PNG/JPEG,然後將其再次GIF,:P

試試這個轉換;) http://gallery.menalto.com/node/13206

希望這可以幫助你

+0

顯然,如果這是您選擇做的事,轉換爲PNG是更好的選擇。但是,由於PHP/GD似乎不支持動畫GIF,因此將它「轉換」爲GIF(例如'imagegif(imagecreatefromgif($ file));')可能會起作用。 – You 2010-08-01 00:00:52