首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

关于java截图并压缩的一个小疑点的个人理解

2012-08-27 
关于java截图并压缩的一个小问题的个人理解使用ava.awt.Graphics类中的 public abstract boolean drawImag

关于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)
方法截图之后,再将图片压缩到指定大小。很容易出现截取的图片只占压缩后图片很小一部分,其他大部分都是黑边的情况。
  经过求证,个人认为出现该情况的原因是:源矩形的第一个坐标被映射到目标矩形的第一个坐标,第二个源坐标被映射到第二个目标坐标。按需要缩放和翻转子图像以保持这些映射关系。
  如果源矩形的第二个坐标与目标矩形的第二个坐标值相同,那么截取的图片将会填充目标矩形的一部分,等同于源矩形被截取的部分。而图片压缩时,会以原图片的尺寸作为参照来压缩,而截取的图片只占有原图尺寸的一小部分,所以大部分没有被覆盖到的像素就被黑色填充,所以压缩之后的图片会出现大量的黑边。

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

热点排行