使用 Java 库 imgsclr 调整大小的图像质量问题
Image quality issues using Java library imgsclr to RESIZE
当我仅尝试使用 imgsclr 4.2(http://www.thebuzzmedia.com/imgscalr-3-2-released/comment-page-1/#comment-650387).
将图像调整为特定的宽度和高度时,我遇到了质量问题
我有一张 240X320 的图片,我必须将其大小调整为 50X75 和 120X180。我使用以下代码分别尝试了两者(我使用的是 imgscalr 4.2)。
image=resize(image,Method.ULTRA_QUALITY, 50,75, OP_ANTIALIAS, OP_BRIGHTER);
saveImage(image, ImageFormatTypes.JPEG, DESTINATION + RESIZED_IMAGE + “.”+ImageFormatTypes.JPEG);
我有两个问题。与我用来手动调整图像大小的其他内部工具相比,#1 的质量非常低。 #2。输出的宽度从 50 增加到 56,从 120 增加到 135,这很奇怪。
你知道为什么会这样吗?我感谢您的帮助。
我认为核心问题不在于imgsclr,而在于选择jpg
。请记住,jpg 使用基于损失的算法,转储部分图像以减小其大小。
为了对比,下面两张图是用同样的方法制作的,但是左边是用jpg
输出,右边是用png
输出(用ImageIO
API)
所以最上面的图片是同一张主图片。
第二行是使用 ULTRA_QUALITY
、AUTOMATIC
、BALANCED
和 QUALITY
方法的 imgsclr。第二行的最后一张图片使用 SPEED
最后一行是一系列 "other" 缩放方法。前两个使用分而治之的方法,将图像除以 2,直到达到所需的大小,演示 here。第一个是 "to fill",另一个是 "to fit"(一个会溢出可用的 space,一个会适合)。第三张图片使用的是 Image#getScaledInstance
我好像在某处引入了 alpha 通道,因此 jpg 版本是红色的,但我是在比较质量 ;)
尺寸增加的原因可能归结为 imgsclr 试图保持图像的纵横比
最后...
这个比较BufferedImageOp
,从右到左使用OP_BRIGHTER
、OP_ANTIALIAS
和OP_BRIGHTER
、OP_ANTIALIAS
、none...
这些以 PNG 格式输出
当我仅尝试使用 imgsclr 4.2(http://www.thebuzzmedia.com/imgscalr-3-2-released/comment-page-1/#comment-650387).
将图像调整为特定的宽度和高度时,我遇到了质量问题我有一张 240X320 的图片,我必须将其大小调整为 50X75 和 120X180。我使用以下代码分别尝试了两者(我使用的是 imgscalr 4.2)。
image=resize(image,Method.ULTRA_QUALITY, 50,75, OP_ANTIALIAS, OP_BRIGHTER);
saveImage(image, ImageFormatTypes.JPEG, DESTINATION + RESIZED_IMAGE + “.”+ImageFormatTypes.JPEG);
我有两个问题。与我用来手动调整图像大小的其他内部工具相比,#1 的质量非常低。 #2。输出的宽度从 50 增加到 56,从 120 增加到 135,这很奇怪。
你知道为什么会这样吗?我感谢您的帮助。
我认为核心问题不在于imgsclr,而在于选择jpg
。请记住,jpg 使用基于损失的算法,转储部分图像以减小其大小。
为了对比,下面两张图是用同样的方法制作的,但是左边是用jpg
输出,右边是用png
输出(用ImageIO
API)
所以最上面的图片是同一张主图片。
第二行是使用 ULTRA_QUALITY
、AUTOMATIC
、BALANCED
和 QUALITY
方法的 imgsclr。第二行的最后一张图片使用 SPEED
最后一行是一系列 "other" 缩放方法。前两个使用分而治之的方法,将图像除以 2,直到达到所需的大小,演示 here。第一个是 "to fill",另一个是 "to fit"(一个会溢出可用的 space,一个会适合)。第三张图片使用的是 Image#getScaledInstance
我好像在某处引入了 alpha 通道,因此 jpg 版本是红色的,但我是在比较质量 ;)
尺寸增加的原因可能归结为 imgsclr 试图保持图像的纵横比
最后...
这个比较BufferedImageOp
,从右到左使用OP_BRIGHTER
、OP_ANTIALIAS
和OP_BRIGHTER
、OP_ANTIALIAS
、none...
这些以 PNG 格式输出