我希望调整上传到服务器上的图片大小,但不要裁剪,以便向他们展示完整版的图片。
基本思路是我只想向用户显示全尺寸的图像(已调整大小)并让他们下载原始文件。
假设是否有人上传了大分辨率且大小为10MB的图像,那么如果我将整个图像加载到图库或其他内容中则需要时间。这就是为什么我只需要将iamge调整为小规模,以显示所有内容并缩小尺寸。
我正在使用imagick,但没有得到如何为此做数学,只知道要裁剪。
我知道我可以减少图像的宽度并让它自动调整高度,但仍然需要减少它的数量。
如果有人能解释,我会感激不尽。
DropBox使用它可以让你上传任意大小的图像,但在图库中它会显示分辨率更低,尺寸更小的图像。但请注意:图像的任何部分都不会被裁剪。
编辑: 例如,如果用户上传Dimension 2496×1404和尺寸3MB的图像。 我需要的图像应该具有较小的尺寸,如1280 x 960,尺寸小于1MB,以便用于图库。
答案 0 :(得分:2)
imagemagick的文档:
http://www.imagemagick.org/Usage/resize/#thumbnail
或者,如果您在代码中使用它:
$width = 100;
$height = 300;
$ratio = $width / $height; // get ratio by dividing width by height
$newWidth = 200; // a random new width
$newHeight = $newWidth / $ratio; // devide by ratio to get new width (600 in this case)
// OR, if you have a new height:
$newHeight = 200;
$newWidth = $newHeight * $ratio; // multiply instead of devide
如果你想制作它的实际像素(我认为你会这样做),不要忘记最后使用round()
回到这里,我想到了另一个解决方案(实际上更容易):
$width = 100;
$height = 300;
$newWidth = 200;
$newHeight = ($newWidth/$width) * $height;
$newWidth/$width
部分计算宽度变化的程度(在我的示例中,它将导致2
),因此高度以相同的比率变化。如果你想根据身高$newWidth
,你可以将它的相同作品转过来。