关于java截图并压缩的一个小问题的个人理解

使用ava.awt.Graphics类中的 public abstract boolean drawImage(Image img,
int dx1,
int dy1,
int dx2,
int dy2,
int sx1,
int sy1,
int sx2,
int sy2,
Color bgcolor,
ImageObserver observer)
方法截图之后,再将图片压缩到指定大小。很容易出现截取的图片只占压缩后图片很小一部分,其他大部分都是黑边的情况。
经过求证,个人认为出现该情况的原因是:源矩形的第一个坐标被映射到目标矩形的第一个坐标,第二个源坐标被映射到第二个目标坐标。按需要缩放和翻转子图像以保持这些映射关系。
如果源矩形的第二个坐标与目标矩形的第二个坐标值相同,那么截取的图片将会填充目标矩形的一部分,等同于源矩形被截取的部分。而图片压缩时,会以原图片的尺寸作为参照来压缩,而截取的图片只占有原图尺寸的一小部分,所以大部分没有被覆盖到的像素就被黑色填充,所以压缩之后的图片会出现大量的黑边。

解决方案:将目标矩形的第二个坐标设置为原图片的相同位置的坐标即可。这样截取到的图片会自动填充到原图片大小,原图尺寸内就没有未被填充的像素,图片压缩之后就会不会出现黑边的情况了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值