不保存图像的图像裁剪
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) 中的特定文件夹?
如何在不保存原始图像的情况下保存图像 URL 的裁剪图像? (在 Rails 中使用 Paperclip 或其他插件)