【问题标题】:How to "sanitize" image uploaded and convert to PNG, with PHP?如何使用PHP“清理”上传的图像并转换为PNG?
【发布时间】:2015-12-22 20:51:20
【问题描述】:

我正在向我的网站添加个人资料图片功能,为了安全起见,我想将图像服务器端转换为 PNG 格式,并从文件中去除额外信息。如果可能的话,它应该是像素到像素的转换。我不需要接受所有格式,只需 PNG 和 JPEG 即可。

【问题讨论】:

    标签: php png server-side image-conversion


    【解决方案1】:

    这个检查文件类型,保持图像的透明度并输出最高质量:

    // the uploaded image
    $file = $_FILES[0]['tmp_name'];
    
    // Get file info
    $data = getimagesize($file);
    $mimetype = $data['mime'];
    
    // Creat the image
    switch($mimetype){
        case("image/png"):
            $image = imagecreatefrompng($file);
            imagealphablending($image, false);
            imagesavealpha($image, true);
            break;
        case('image/jpeg'):
        case('image/pjpeg'):
        case('image/x-jps'):
            $image = imagecreatefromjpeg($file);
            break;
        case('image/gif'):
            $image = imagecreatefromgif($file);
            imagealphablending($image, false);
            imagesavealpha($image, true);
            break;
        default:
            throw new Exception("Invalid image type. Only excepts PNG, JPG, and GIF. You entered a {$mimetype} type image.");
    }
    
    // Output to browser with maximum quality
    imagepng($image, null, 9);
    
    // Or save the image as a file
    //imagepng($image, "SavedImageFilename.png", 9);
    

    【讨论】:

      【解决方案2】:

      功能的核心是:

      $data = file_get_contents($sourceImagePath);
      
      $im = null;
      if(!empty($data)){
          $im = imagecreatefromstring($data);
      }
      
      imagepng($im,$saveImageToPath);
      imagedestroy($im);
      

      如果您需要更多信息,请告诉我

      【讨论】:

        猜你喜欢
        • 2010-09-06
        • 2011-06-16
        • 2011-10-28
        • 2018-11-24
        • 2013-06-22
        • 1970-01-01
        • 2016-06-02
        • 2021-07-23
        相关资源
        最近更新 更多