【问题标题】:Image Resize without cropping and maintaing aspect ratio无需裁剪和保持纵横比即可调整图像大小
【发布时间】:2013-10-05 06:34:49
【问题描述】:

我想调整上传到服务器但不裁剪的图像大小,以便显示完整版的图像。

基本想法是我只想向用户展示完整尺寸的图像(调整大小)并让他们下载原始文件。

如果有人上传大分辨率且大小为 10MB 的图像,那么如果我将整个图像加载到画廊或其他东西中,这将需要一些时间。这就是为什么我只需要将 iamge 调整为小尺寸,以显示所有内容并缩小尺寸。

我正在使用 imagick,但不知道如何为此做数学,只知道裁剪。

我知道我可以减少图像的宽度并让它自动调整高度,但仍然坚持我需要减少多少。

如果有人能解释一下,我将不胜感激。

DropBox 使用它可以让您上传任意大小的图像,但在图库中它显示的图像分辨率较低且尺寸较小。但请注意:图像的任何部分都不会被裁剪。

编辑: 例如,如果用户上传尺寸为 2496 × 1404 且大小为 3MB 的图像。 我需要尺寸较小的图像,例如 1280 x 960,尺寸小于 1MB,以便用于图库。

【问题讨论】:

    标签: php image image-processing imageview imagick


    【解决方案1】:

    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 基于高度,你也可以把它转过来。

    【讨论】:

      猜你喜欢
      • 2014-03-02
      • 2018-06-11
      • 2012-11-23
      • 1970-01-01
      • 2013-06-26
      • 2012-04-15
      相关资源
      最近更新 更多