【问题标题】:Resize photo with every extensions使用每个扩展名调整照片大小
【发布时间】:2013-07-04 18:56:39
【问题描述】:

我从某个网站获得了调整照片大小的脚本,基本上它工作得很好,但问题是:只有当我尝试上传其他扩展名时,我才能使用它来上传 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);  }

?>

我的问题再次是:如何使这个脚本适用于所有扩展?

非常感谢,

【问题讨论】:

    标签: php upload photo image-resizing


    【解决方案1】:

    您可能需要使用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);  }
    

    【讨论】:

    • 感谢您提供一个想法,实际上我使用了这段代码,它运行良好:$size=GetimageSize($images); $height=100; switch(strtolower($size['mime'])) { case 'image/png': $images_orig = imagecreatefrompng($images); break; case 'image/jpeg': $images_orig = imagecreatefromjpeg($images); break; case 'image/gif': $images_orig = imagecreatefromgif($images); break; default: die(); }
    【解决方案2】:

    您的 PHP 脚本很可能使用 ImageMagick。

    JPG、GIF、PNG 是不同的图像格式,存储的数据类型不同。

    说明 ImageCreateFromJPEG、ImageCreateTrueColorImageJPG 仅适用于 JPG 格式,因此...开始在 ImageMagick 的文档中搜索 GIF 和 PNG。

    【讨论】:

      猜你喜欢
      • 2020-08-12
      • 2017-01-27
      • 1970-01-01
      • 1970-01-01
      • 2014-02-13
      • 2020-05-10
      • 1970-01-01
      • 2015-07-24
      • 2018-01-19
      相关资源
      最近更新 更多