2013-07-07 42 views
0

我得到了調整大小的照片腳本frm一些網站,基本上它工作得很好,但問題是:我只能用它來上傳JPG照片,只有當我嘗試上傳其他擴展名如:PNG, GIF我將在這裏得到的錯誤是我的代碼:使用每個擴展名調整照片大小

<? 
if(trim($_FILES["fileUpload"]["tmp_name"]) != "") 
{ 
    $images = $_FILES["fileUpload"]["tmp_name"]; 
    $new_images = "Thumbnails_".$_FILES["fileUpload"]["name"]; 
    copy($_FILES["fileUpload"]["tmp_name"],"MyResize/".$_FILES["fileUpload"]["name"]); 
    $width=100; //*** Fix Width & Heigh (Autu caculate) ***// 
    $size=GetimageSize($images); 
    $height=100; 
    $images_orig = ImageCreateFromJPEG($images); 
    $photoX = ImagesX($images_orig); 
    $photoY = ImagesY($images_orig); 
    $images_fin = ImageCreateTrueColor($width, $height); 
    ImageCopyResampled($images_fin, $images_orig, 0, 0, 0, 0, $width+1, $height+1, $photoX, $photoY); 
    ImageJPEG($images_fin,"MyResize/".$new_images); 
    ImageDestroy($images_orig); 
    ImageDestroy($images_fin); } 

>

再次我的問題是:如何使這個腳本適用於所有的擴展?

非常感謝,

回答

0

您可能需要使用pathinfo()得到文件的擴展名,並使用ImageCreateFromJPEGImageCreateFromPNGImageCreateFromGIFImageJPEGImagePNGImageGIF相應:

<? 
if(trim($_FILES["fileUpload"]["tmp_name"]) != "") 
{ 
    $images = $_FILES["fileUpload"]["tmp_name"]; 
    $new_images = "Thumbnails_".$_FILES["fileUpload"]["name"]; 
    copy($_FILES["fileUpload"]["tmp_name"],"MyResize/".$_FILES["fileUpload"]["name"]); 
    $width=100; //*** Fix Width & Heigh (Autu caculate) ***// 
    $size=GetimageSize($images); 
    $height=100; 
    $ext = pathinfo($images, PATHINFO_EXTENSION); 
    if($ext == "jpg") 
    { 
     $images_orig = ImageCreateFromJPEG($images); 
    } 
    elseif($ext == "png") 
    { 
     $images_orig = ImageCreateFromPNG($images); 
    } 
    elseif($ext == "gif") 
    { 
     $images_orig = ImageCreateFromGIF($images); 
    } 
    $photoX = ImagesX($images_orig); 
    $photoY = ImagesY($images_orig); 
    $images_fin = ImageCreateTrueColor($width, $height); 
    ImageCopyResampled($images_fin, $images_orig, 0, 0, 0, 0, $width+1, $height+1, $photoX, $photoY); 
    if($ext == "jpg") 
    { 
     ImageJPEG($images_fin,"MyResize/".$new_images); 
    } 
    elseif($ext == "png") 
    { 
     ImagePNG($images_fin,"MyResize/".$new_images); 
    } 
    elseif($ext == "gif") 
    { 
     ImageGIF($images_fin,"MyResize/".$new_images); 
    } 

    ImageDestroy($images_orig); 
    ImageDestroy($images_fin); } 
+0

感謝您給出一個想法,實際上我使用這段代碼,它完美地工作:'$ size = GetimageSize($ images); \t \t $ height = 100; \t \t \t 開關\t(用strtolower($大小[ 'MIME'])) \t \t \t { \t \t情況下 '圖像/ PNG': \t $ images_orig = imagecreatefrompng($圖像); \t break; \t \t case'image/jpeg': $ images_orig = imagecreatefromjpeg($ images); 休息; \t \t case'image/gif': $ images_orig = imagecreatefromgif($ images); 休息; \t默認:die(); \t \t}' – amprie286

0

你的PHP腳本最有可能使用的ImageMagick。

JPG,GIF,PNG是不同的圖像格式,不同類型的數據存儲。

說明ImageCreateFromJPEG,ImageCreateTrueColorImageJPG僅適用於JPG格式,所以......開始ImageMagick的文檔,GIF和PNG中進行搜索。

+0

謝謝您的回答,我得到它現在的工作:) – amprie286