在Java裁剪图像期间(y + height)在Raster之外

时间:2013-07-26 19:41:31

标签: java image bufferedimage

I want to crop  image like below.


 +------------------+
 |                  |
 |  +-----------+   |
 |  |           |   |
 |  |           |   |
 |  |           |   |
 |  |           |   |
 |  +-----------+   |
 |                  |
 +------------------+


style="width: 413px; height: 296px; margin-left: -134px; margin-top: -67px;"

             var height = ele.css('height');
     var width = ele.css('width');
     var margin_left = ele.css('margin-left');
     var margin_top = ele.css('margin-top');

我不知道该怎么做以获得裁剪的图像?

 final int totalheight = image.getHeight();  //1900
 final int totalwidth = image.getWidth();  //2533
       image.getSubimage(totalheight+Integer.valueOf(margintop).intValue(), totalwidth+Integer.valueOf(marginleft).intValue(), Integer.valueOf(width).intValue(),Integer.valueOf(height).intValue());


java.awt.image.RasterFormatException: (y + height) is outside of Raster
at sun.awt.image.ByteInterleavedRaster.createWritableChild(Unknown Source)
at java.awt.image.BufferedImage.getSubimage(Unknown Source)

1 个答案:

答案 0 :(得分:0)

看起来你混淆了x和y坐标。此外,totalWidth + marginLefttotalheight + margintop似乎不正确。 IE浏览器。 x = 2533 +( - 134)= 2399,宽度= 413,y = 1900 +( - 67)= 1833,高度= 296将导致部分在栅格之外的矩形(以及最初得到的相同异常)。

尝试打印传递给getSubImage方法的x,y,width和height值,您可能会看到错误。我不确定我是否完全理解你想做什么,但我认为你想要的是:

image.getSubimage(-Integer.valueOf(marginleft).intValue(),           // x
                  -Integer.valueOf(margintop).intValue(),            // y
                  Integer.valueOf(width).intValue(),                 // width
                  Integer.valueOf(height).intValue());               // height