【问题标题】:Best resolution resizing image using ImgScalr使用 ImgScalr 调整图像大小的最佳分辨率
【发布时间】:2015-06-16 10:12:49
【问题描述】:
我对 ImgScalr API 非常陌生。我需要将图像调整为不同的视图,其中一个是移动视图,第二个是缩略图视图。
我已经使用了 resize 方法,但有疑问。在保持适当纵横比的多个可用选项中调整图像大小的最佳方法是哪个(因为图像不会变得模糊)
我注意到的一件事是每个调整大小的方法都接受一个 targetSize 参数。指定该字段如何确保图像的纵横比不受影响。
resize 方法的理想参数应该是什么,因为我需要为我的输入图像生成一个 2 KB 的缩略图视图,它的大小可能约为 2 MB。
由于缺乏足够的文档和示例,我有点困惑。
【问题讨论】:
标签:
java
image-resizing
imgscalr
【解决方案1】:
imgscalr 作者在这里 - 绝对理解混淆,如果你对库的工作方式感到好奇,代码库本身(如果你碰巧看了GitHub)几乎是 50% cmets,但从使用的角度来看你是对的 -我没有花很多时间在例子上。
希望我能为你快速打出一些亮点......
纵横比
imgscalr 的核心设计租户是始终遵守纵横比 - 因此,如果您传入 200x1(例如一些荒谬的尺寸),它将尝试计算满足这些“目标”尺寸的最小尺寸。
如果您总是希望将缩略图放在某个框内,例如 200x200,这很方便 - 只需将其传入,imgscalr 将确定不会大于该框的最终宽度/高度(可能类似于 200x127 或 78x200)
质量
默认情况下,库通过考虑尺寸变化的增量以及放大/缩小来执行所谓的“平衡”质量方法,并选择最接近的方法(速度与质量)。
您可以强制它始终尽可能快地缩放(扩大操作的好主意),或者可以强制它始终使用高质量或超质量(如果您想要非常清晰的缩略图或其他大幅缩小图像的操作,这是个好主意分辨率,并且您希望它们看起来仍然不错)
除此之外,您还可以要求库对图像应用一些额外的过滤(称为 Image Ops)——如果您的边缘出现锯齿状,我会提供一些方便的默认设置,例如抗锯齿。您正在缩放的大量源素材(在使用 diag 直线缩放桌面和其他东西的屏幕截图时很常见)
总体
该库旨在尽可能简单地使用,并不比以下内容更难:
BufferedImage thumbnail = Scalr.resize(src, 128);
将帮助您开始...所有其他与质量、拟合、模式、操作等有关的操作只是您可以选择执行的附加操作,如果您认为结果不是您想要的。
希望对您有所帮助!