不保存图像的图像裁剪

Posted

技术标签:

【中文标题】不保存图像的图像裁剪【英文标题】:Imagecrop without saving the image 【发布时间】:2012-08-31 08:54:35 【问题描述】:

我有一堆产品预览图片,但它们的尺寸不一样

所以我想知道,是否可以在旅途中裁剪图像而不保存它?

这两个链接应该说明我的意思:

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

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

【问题讨论】:

是的,但您可能想要保存它,因为图像调整大小操作非常昂贵,而您确实不想必须这样做一遍又一遍。 【参考方案1】:

是的,这可能是我的做法:

//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);

这不是一个非常简单的操作,就像其他操作一样,我也建议您在创建缩略图后将其保存到文件系统中。

您可能想查看php's GD library。

【讨论】:

【参考方案2】:

您可能想试试这个简单的脚本:https://github.com/wes/phpimageresize

它还允许缓存,这应该有助于解决性能问题。

但我也更喜欢调整图像大小并将它们保存为缩略图。

【讨论】:

【参考方案3】:

这当然是可能的,但您想要做的可能不是一个好主意 - 这就是原因。

如果您裁剪图像并保存它,您(或者更确切地说是您的服务器)再也不需要这样做了。这不是一个轻松的操作。

但是,如果您一直在运行中进行裁剪,您的服务器将不得不每次都进行这项工作 - 这是非常低效的。

作为最坏的情况,为什么不将它们自动裁剪为您想要的尺寸(而不是手动进行)并简​​单地保存这些结果?

最后,鉴于它是一家商店,手动裁剪它们不会为您的产品提供最好的图像 - 从而获得最好的销售机会吗?

【讨论】:

以上是关于不保存图像的图像裁剪的主要内容,如果未能解决你的问题,请参考以下文章

裁剪图像并保存到 sdcard (Android) 中的特定文件夹?

使用 JCrop 保存裁剪的图像

如何在不保存原始图像的情况下保存图像 URL 的裁剪图像? (在 Rails 中使用 Paperclip 或其他插件)

我只想将裁剪后的图像保存到图库中。但它保存了原始的完整图像。如何只保存裁剪的图像?

在android中裁剪后保存图像

使用 jcrop 裁剪后预览图像不显示