Как «продезинфицировать» изображение загружено и преобразовано в PNG, с помощью PHP?

Я добавляю изображение профиля на свой сайт, и в целях безопасности я хотел бы преобразовать изображения на стороне сервера в формат PNG и удалить из файла дополнительную информацию. Это должно быть преобразование пикселей в пиксели, если это возможно. Мне не нужно принимать все форматы, просто PNG и JPEG в порядке.

0

Решение

Основой функциональности является:

$data = file_get_contents($sourceImagePath);

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

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

Если вам нужно больше информации, дайте мне знать

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

По вопросам рекламы [email protected]