【问题标题】:Image with imagick driver resizing into small image gives large file size使用 imagick 驱动程序调整大小为小图像的图像可提供较大的文件大小
【发布时间】:2016-03-28 00:40:02
【问题描述】:

我正在调整项目中的大图像大小以创建缩略图。这是一个例子:

原始图像 (1160 x 773):

缩略图 (400 x 266):

问题是,大图是732kb,我觉得可以理解,因为它的尺寸很大,但第二张图还是573kb。

这是正常的还是有什么问题?

这是我调整大小的代码:

\Intervention\Image\Facades\Image::make($originalPath)
    ->resize($resized_width, $resized_height, function($constraint){
        $constraint->aspectRatio();
        $constraint->upsize();
    })
    ->save($thumbnailPath, 85);

【问题讨论】:

  • 这是正常的。缩略图使用质量 30。
  • 但是如果质量为30,它不会产生模糊的图像吗?这也是一种特殊情况,因为我已经使用相同的代码和几乎相同的大小调整了一百多个图像的大小,但它们的文件大小比这个小得多。当调整为缩略图大小时,它们中的大多数只有 70kb。在这种情况下,我想我有 10 张图像,我什至已经将质量设置为 0,它非常模糊和像素化,但大小仍然离 500kb 不远。
  • 您应该将这些详细信息添加到问题中。
  • 对此我很抱歉。但是,当图像大小调整到其图像大小的一半以上时,文件大小仍然接近原始大小,这不是很奇怪吗?我只是认为这样问题会更简单。
  • 这些图片有问题,它们的格式是否与其他图片不同?

标签: php image laravel-5 imagick intervention


【解决方案1】:

试试这个代码,你会得到一个具有纵横比的小尺寸图像。

$configpath = 'Path of destination';
$width      = ($width)?$width:200;
$height     = ($height)?$height:200;
$img = Image::canvas($width, $height);
$image = Image::make($path)->resize($width, $height, function ($c) {
        $c->aspectRatio();
        $c->upsize();
});
// insert resized image centered into background
$img->insert($image, 'center');
$img->save($configpath.$width.'x'.$height.'_'.$filename);

【讨论】:

  • 好人!谢谢你的帮助。我已经在我的本地机器上尝试过,它工作正常。稍后我将在我的服务器上尝试此操作,如果输出相同,我会将其标记为正确答案。为了将来参考,这次我使用了 gd 驱动程序而不是 imagick。
猜你喜欢
  • 1970-01-01
  • 2015-11-03
  • 2018-06-21
  • 2015-06-16
  • 1970-01-01
  • 1970-01-01
  • 2020-01-27
  • 2021-07-20
  • 2023-03-16
相关资源
最近更新 更多