PHP: если размер больше, чем ..px - PullRequest
0 голосов
/ 09 января 2011

Я хочу сделать это, если размер изображения превышает 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 как вывод ..

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

1 Ответ

2 голосов
/ 09 января 2011

Между строками 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() проверяет байты внутри изображения, чтобы определить, в каком формате оно .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...