@michellie

Как обрезать изображение в Imagic?

Может поделится кто готовым кодом, или подскажет что делать, нужно привести все загружаемые картинки к размеру 300х400, без черных вставок в изображение и без лишних обрезаний. Что ни делаю, либо обрезается лишнее либо черные прямоугольники.

$im =    imageCreateFromJpeg($destination); 
//    создаём исходное изображение на основе 
//    исходного файла и определяем его размеры 
$w_src = imagesx($im); //вычисляем ширину
$h_src = imagesy($im); //вычисляем высоту изображения
$w = 300; //ширина.
$h = 400;  //высота.
$dest = imagecreatetruecolor($w,$h); 
imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $h, $w_src, $w_src); 
$date=time(); //вычисляем время в настоящий момент.
imagejpeg($dest, $upload_dir90.$date.$_FILES['file']['name'][$i].".jpg",50);//сохраняем изображение формата jpg в нужную папку */
  • Вопрос задан
  • 113 просмотров
Решения вопроса 1
@michellie Автор вопроса
получилось решить через GD, если кто будет искать..

$destination = $upload_dir .'/' . time() . $_FILES['file']['name'][$i];
$thumb_width = 330;
$thumb_height = 467;
$s=GetImageSize($destination) or exit;
$width = $s[0];
$height = $s[1];

$original_aspect = $width / $height;
$thumb_aspect = $thumb_width / $thumb_height;

if ( $original_aspect >= $thumb_aspect )
{
   // If image is wider than thumbnail (in aspect ratio sense)
   $new_height = $thumb_height;
   $new_width = $width / ($height / $thumb_height);
}
else
{
   // If the thumbnail is wider than the image
   $new_width = $thumb_width;
   $new_height = $height / ($width / $thumb_width);
}

$thumb = imagecreatetruecolor( $thumb_width, $thumb_height );
$image = ImageCreateFromjpeg($destination);
// Resize and crop
imagecopyresampled($thumb,
                   $image,
                   0 - ($new_width - $thumb_width) / 2, // Center the image horizontally
                   0 - ($new_height - $thumb_height) / 2, // Center the image vertically
                   0, 0,
                   $new_width, $new_height,
                   $width, $height);
$date=time();
imagejpeg($thumb,$upload_dir90.$date.$_FILES['file']['name'][$i],50);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы