【问题标题】:How to resize a image without losing quality using java?java - 如何在不损失质量的情况下调整图像大小?
【发布时间】:2012-09-04 02:31:14
【问题描述】:

我的要求是:“如何在不损失质量的情况下使用 swing 调整图像大小”。

我正在使用调整大小组件、标签、面板。 我此时正在使用调整大小的概念,图像模糊并失去质量。 所以你知道“如何使用摇摆概念在不损失质量的情况下调整图像大小?”。把相关信息或代码发给我。

谢谢你, GaneshKumar。

【问题讨论】:

  • 您是要减小还是增大图像的大小?你说的质量是什么意思?您能否发布一个调整大小前后的图片示例?

标签: java swing image-processing


【解决方案1】:

甘尼什,

你可以看看imgscalr,它是一个非常简单的(单个类,一堆静态方法使用),看起来像这样使用:

BufferedImage thumbnail = Scalr.resize(srcImage, 150);

为确保获得最高质量的缩放结果,您可以将其他参数传递给 resize 方法,如下所示:

BufferedImage thumbnail = resize(img, Method.ULTRA_QUALITY, 125, OP_ANTIALIAS);

您也可以使用slew of simple image operations(如裁剪、填充、旋转等)。还有一个异步类可以一次将许多操作排队,并在可配置数量的线程中执行它们,例如,如果您在服务器上进行图像处理。

该库是用纯Java编写的,并在Apache 2许可下发布,如果您有兴趣,可以找到所有源代码here

如果您对其他示例或用例感到好奇,这里有与它相关的some other SO questions

【讨论】:

    【解决方案2】:

    你要求的是不可能的。缩放new resolution > native resolution 定义为有损的光栅图像。如果万一我误解了这个问题,我提前道歉。

    【讨论】:

    • 我相信被问到的是,当缩放图像时,图像变得非常模糊,不仅仅是质量下降......它变得非常糟糕 - 我也遇到过这个问题,但从来没有找到了一个很好的解决方案。
    • 这不是真的。如果缩放因子是整数,则放大图像的大小可以是无损的。缩小总是有损的。
    • 我认为,正如你所说,这取决于他所说的质量是什么意思。尽管将缩放因子作为整数放大图像,但抗锯齿像素会覆盖更多区域,这会使其看起来不太平滑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-18
    • 1970-01-01
    相关资源
    最近更新 更多