Обрезка изображения без сохранения изображения


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

Поэтому мне интересно, можно ли обрезать изображение на ходу, не сохраняя его?

Эти две ссылки должны показать, что я имею в виду:

Http://xn--nstvedhandel-6cb.dk/alpha_1/?side=vis_annonce&id=12

Http://xn--nstvedhandel-6cb.dk/alpha_1/?side=vis_annonce&id=13

 5
Author: kushalbhaktajoshi, 2012-08-31

3 answers

Да, это возможно, вот как я это делаю:

//Your Image
$imgSrc = "image.jpg";
list($width, $height) = getimagesize($imgSrc);
$myImage = imagecreatefromjpeg($imgSrc);

// calculating the part of the image thumbnail
if ($width > $height)
{
    $y = 0;
    $x = ($width - $height) / 2;
    $smallestSide = $height;
 } 
 else
 {
    $x = 0;
    $y = ($height - $width) / 2;
    $smallestSide = $width;
 }

 // copying the part into thumbnail
 $thumbSize = 100;
 $thumb = imagecreatetruecolor($thumbSize, $thumbSize);
 imagecopyresampled($thumb, $myImage, 0, 0, $x, $y, $thumbSize, $thumbSize, $smallestSide, $smallestSide);

 //final output
 header('Content-type: image/jpeg');
 imagejpeg($thumb);

Это не очень легкая операция, как и другие, я также рекомендую вам сохранить миниатюру после ее создания в вашей файловой системе.

Возможно, вы захотите проверить библиотеку GD PHP.

 5
Author: RTB, 2012-08-31 09:05:39

Возможно, вы захотите попробовать этот простой скрипт: https://github.com/wes/phpimageresize

Он также позволяет кэшировать, что должно помочь в решении проблем с производительностью.

Но я также предпочитаю изменять размер изображений и сохранять их в виде миниатюр.

 2
Author: Peter Ilfrich, 2012-08-31 09:04:22

Это, конечно, возможно, но то, что вы хотите сделать, вероятно, не очень хорошая идея - вот почему.

Если вы обрезаете изображение, сохраните его, вам (или, скорее, вашему серверу) никогда не придется делать это снова. Это не легкая операция.

Однако, если вы продолжаете обрезать на лету, вашему серверу придется выполнять эту работу каждый раз, что довольно неэффективно.

В худшем случае, почему бы автоматически не обрезать их один раз до нужных размеров (а не делать это вручную) и просто сохранить эти результаты?

Наконец, учитывая, что это магазин, разве обрезка вручную не даст вашим товарам наилучшие изображения - и, следовательно, наилучшие шансы на их продажу?

 1
Author: Fluffeh, 2012-08-31 08:58:36