php - 如何使用 PHP 将 "sanitize"图像上传并转换为 PNG?

标签 php png server-side image-conversion

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

最佳答案

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

// 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);

关于php - 如何使用 PHP 将 "sanitize"图像上传并转换为 PNG?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34424224/

相关文章:

css - Chrome 中带有透明 png 背景图像的奇怪工件

c# - Base64 图像未显示在 asp.net mvc View 中

swift - Vapor中描述依赖包的majorVersion和minor

php - 两个不同主机的上传目录

php - 如何获取兄弟div的html值

php - 如何在没有表单的情况下发布到数据库 php mysql html

php - mysql无法创建外键错误121但不存在

php - str_shuffle 和随机性

java - 位图图像未锐化

jquery - 法尔康 PHP : Jquery Datatable Server Side individual column filtering only gives first pages selection options