如何使用PHP“清理”上传的图像并转换为PNG?

时间:2015-12-22 20:51:21

标签: php png server-side image-conversion

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

2 个答案:

答案 0 :(得分:1)

功能的核心是:

$data = file_get_contents($sourceImagePath);

$im = null;
if(!empty($data)){
    $im = imagecreatefromstring($data);
}

imagepng($im,$saveImageToPath);
imagedestroy($im);

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

答案 1 :(得分: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);