3

我对 ImgScalr API 非常陌生。我需要将图像调整为不同的视图,其中一个是移动视图,第二个是缩略图视图。我已经使用了 resize 方法,但有疑问。在保持适当纵横比的多个可用选项中调整图像大小的最佳方法是(因为图像不会变得模糊)

我注意到的一件事是每个 resize 方法都接受一个targetSize参数。指定该字段如何确保图像的纵横比不受影响。

resize 方法的理想参数应该是什么,因为我需要为我的输入图像生成一个 2 KB 的缩略图视图,它的大小可能约为 2 MB。

由于缺乏足够的文档和示例,我有点困惑。

4

1 回答 1

12

imgscalr 作者在这里 - 绝对理解混乱,如果你好奇这个库是如何工作的,代码库本身(如果你碰巧浏览GitHub的话)几乎有 50% 的评论,但从使用的角度来看你是对的 - 我没有放很多时间变成例子。

希望我能快速为你打出一些亮点......

纵横比

imgscalr 的核心设计租户是始终尊重纵横比 - 因此,如果您传入 200x1(例如一些荒谬的尺寸),它将尝试计算满足这些“目标”尺寸的最小尺寸。

如果您总是希望将缩略图放在某个框中,例如 200x200,这很方便——只需将其传入,imgscalr 将确定不会大于该值的最终宽度/高度(可能类似于 200x127 或 78x200)

质量

默认情况下,库通过考虑尺寸变化的增量以及按比例放大/缩小并选择最接近的方法(速度与质量)来执行所谓的“平衡”质量方法。

您可以强制它始终尽可能快地缩放(扩大操作的好主意),或者可以强制它始终使用高质量或超质量(如果您想要非常清晰的缩略图或其他大幅降低图像分辨率的操作,那么您的想法很好)希望他们仍然看起来不错)

最重要的是,您还可以要求库对图像应用一些额外的过滤(称为图像操作)——如果您在很多图像上出现锯齿状边缘,我会提供一些方便的默认设置,例如抗锯齿。您正在缩放的​​源材料(在使用 diag 直线缩放桌面和其他东西的屏幕截图时很常见)

全面的

该库旨在尽可能简单地使用,并不比以下更难:

BufferedImage thumbnail = Scalr.resize(src, 128);

将帮助您开始...如果您认为结果不是您想要的,那么围绕质量、拟合、模式、操作等的所有其他操作只是您可以选择做的额外事情。

希望有帮助!

于 2015-06-17T04:47:42.530 回答