java image 设置大小_如何在Java中调整BufferedImage的大小

单步缩放的主要问题是它们通常不会产生高质量的输出,因为它们专注于将原始图像压缩到更小的空间中,通常通过剔除大量像素信息(不同的算法完成不同的事情,所以我归纳有效)

威尔drawGraphics规模上下,是的,它会向它或产生高质量的输出?这些将归结为实现,一般来说,大多数默认使用的缩放算法都集中在速度上。你可以通过一些小小的方法来实现,但通常情况下,除非你在一个小范围内扩展,否则质量通常会受到影响(从我的经验来看)。

一般来说,推荐使用专用库,如imgscalr,从我玩过的十分钟时间里,它做得很好,或者执行一个阶梯式的规模。

阶梯式缩放基本上是将图像上下移动2的幂次,直到达到所需的大小。请记住,扩大规模只不过是占用一个像素并稍微扩大一点,所以如果您扩大到一个非常大的尺寸,质量将永远是一个问题。

例如...

记住,任何缩放通常是昂贵的操作(基于图像的原始和目标尺寸),所以一般来说最好是尝试在绘制过程的大小以及可能的背景下进行这些操作。

还有一个问题是否要保持图像的宽高比?根据你的例子,图像将以方形方式缩放(拉伸以满足目标尺寸的要求),但这通常是不期望的。您可以将-1传递给宽度或高度参数,并且底层算法将保留原始图像的宽高比,或者您可以简单地控制并确定是否要将图像填充或适合目标区域,例如...

一般情况下,我避免使用drawImage或getScaledInstance大部分时间(如果你只缩放在小范围内或者想要做低质量,快速的规模,这些都可以工作),并更多依赖于适合/填充目标区域和缩放等事情。使用我自己的方法的原因简直归结为并不总是被允许使用外部库。尼斯不得不重新发明轮子,你可以

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值