Я нашел этот код здесь в стеке ( Создание миниатюры из загруженного изображения ), и он отлично работает для изображений (png, jpeg, jpg), но когда я пытаюсь с тем же встроенным Эта функция просто не работает с GIF (http://php.net/manual/en/function.imagecreatefromgif.php). Кроме того, всякий раз, когда вы загружаете изображение и используете функцию для изменения размера изображения, фон измененного изображения черного цвета.
Так что мои вопросы
- что мне делать, чтобы фон не стал черным?
Как мне расширить функцию, чтобы она также охватывала GIF?
function createThumbnail($type,$image_name,$new_width,$new_height,$uploadDir,$moveToDir){
$path = $uploadDir . $image_name;
$mime = getimagesize($path);
if($mime['mime']=='image/png') {
$src_img = imagecreatefrompng($path);
}
if($mime['mime']=='image/gif') {
$src_img = imagecreatefromgif($path);
}
if($mime['mime']=='image/jpg' || $mime['mime']=='image/jpeg' || $mime['mime']=='image/pjpeg') {
$src_img = imagecreatefromjpeg($path);
}
$old_x = imageSX($src_img);
$old_y = imageSY($src_img);
$thumb_w = $new_width;
$thumb_h = $new_height;
$dst_img = ImageCreateTrueColor($thumb_w,$thumb_h);
imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,$old_x,$old_y);
// New save location
$image_name_new = explode(".", $image_name);
if ($type == 1){
$image_name = $image_name_new[0] . "_thumb." . $image_name_new[1];
} else if ($type == 2){
$image_name = $image_name_new[0] . "_image." . $image_name_new[1];
}
$new_thumb_loc = $moveToDir . $image_name;
if($mime['mime']=='image/png') {
$result = imagepng($dst_img,$new_thumb_loc,8);
}
if($mime['mime']=='image/gif') {
$result = imagegif($dst_img,$new_thumb_loc,8);
}
if($mime['mime']=='image/jpg' || $mime['mime']=='image/jpeg' || $mime['mime']=='image/pjpeg') {
$result = imagejpeg($dst_img,$new_thumb_loc,80);
}
imagedestroy($dst_img);
imagedestroy($src_img);return $result;}