使用 ImgScalr 调整图像大小的最佳分辨率

Best resolution resizing image using ImgScalr

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

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

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

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

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

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

纵横比

imgscalr 的一个核心设计租户是始终遵循宽高比 - 因此如果您传入 200x1(例如一些荒谬的尺寸),它将尝试计算满足这些要求的最小尺寸 'target'尺寸。

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

质量

默认情况下,库通过考虑维度变化的增量以及缩小 up/scaling 来执行所谓的 'balanced' 质量方法,并选择最接近的方法(速度 VS 质量) .

您可以强制它始终尽可能快地缩放(扩大操作的好主意)或者可以强制它始终使用高质量或超高质量(如果您想要真正清晰的缩略图或其他大幅减少的操作,这是个好主意)图像分辨率并且您希望它们看起来仍然不错)

最重要的是,您还可以要求图书馆对图像应用一些额外的过滤(称为图像操作)——我提供了一些开箱即用的方便的默认设置,比如抗锯齿功能,如果您的图像出现锯齿状很多来源的边缘 material 你正在缩放(在缩放桌面屏幕截图和其他带有诊断直线的东西时很常见)

总体

该库旨在尽可能简单易用,不难于:

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

会让你开始......所有其他关于质量、拟合、模式、操作等的操作只是你可以选择做的额外事情,如果你认为结果不是你想要的。

希望对您有所帮助!