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)
答案 0 :(得分:0)
看起来你混淆了x和y坐标。此外,totalWidth + marginLeft
和totalheight + 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