Вопрос

Я хочу сделать это, если изображение превышает размеры 604x453, затем измените размер до 604x453.

Я сделал это так далеко:

    $org_name = stripslashes($_FILES[$upload_name]['name']);
    $file_size = $_FILES[$upload_name]['size'];
    $file_temp = $_FILES[$upload_name]['tmp_name'];
    $file_type = $_FILES[$upload_name]["type"];
    $file_err  = $_FILES[$upload_name]['error'];
list($width, $height, $type, $attr) = $imageSizeInfo;
    $move_me = "images/users/status/".$org_name;
if(move_uploaded_file($file_temp, $move_me)) {
    echo "{";
    echo        "msg: '".$org_name."'";
    echo "}";
}
if($width > 604 && $height > 453) {
$jpeg_quality = 90;
$src = "images/users/status/".$org_name;
$ext= pathinfo($src, PATHINFO_EXTENSION);
$targ_h = 453;
$targ_w = 604;
$path_thumbs = "images/users/status/";
$thumb_path = $path_thumbs . '/' . $newfilename;

if($ext == "jpg" OR $ext == "jpeg" OR $ext == "JPG"){
    $img_r = imagecreatefromjpeg($src);
}elseif($ext == "png" OR $ext == "PNG"){
    $img_r = imagecreatefrompng($src);
}elseif($ext == "gif" OR $ext == "GIF"){ 
    $img_r = imagecreatefromgif($src);
}
$dst_r = ImageCreateTrueColor( $targ_w, $targ_h );

imagejpeg($dst_r,$thumb_path,$jpeg_quality);

unlink($move_me);
}

Итак, сначала он загружает файл с исходными размерами и все, а затем после того, как он проверяет размеры, а затем изменяет изменение его и раздачи (удалить) оригинальный ..

Теперь я не знаю, что, но как-то в процедуре изменения размера, она идет не так, и я получаю только черный квадрат в размерах 604x453.

Что я пропустил, как я могу решить это?

Это было полезно?

Решение

Между вашим ImageCreateTrueColor а также imagejpeg Линии, вам нужно что-то подобное:

imagecopyresampled($dst_r, $img_r, 0, 0, 0, 0, $targ_w, $targ_h, $width, $height);

Смотрите руководство PHP для imagecopyresampled().

Ваш старый код был по существу создает пустой холст правильного размера, затем создавая «черный квадрат» от него.

Вы также должны использовать getimagesize() Чтобы определить, какой тип изображения был загружен, вместо того, чтобы использовать расширение файла.

Индекс 2 является одним из констант Imagetype_xxx, указывающие тип изображения.

Причина этого состоит в том, что это совершенно правдоподобно, что изображение загружено, которое называется file.jpg, но это на самом деле .png файл - getimagesize() Исследует байты внутри изображения, чтобы определить, какой это формат.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top