I am using the following code to "crop an image", however it ignores transparency, so any BufferedImages obtained from this method are completely opaque, and there don't appear to be any .getARGB() or .setARGB() methods. How do I work around this?
private static BufferedImage getCroppedImage(BufferedImage wholeImage, int xPos, int yPos, int width, int height)
{
GraphicsEnvironment graphEnv = GraphicsEnvironment.getLocalGraphicsEnvironment();
BufferedImage croppedImage = null;
try
{
GraphicsDevice screen = graphEnv.getDefaultScreenDevice();
GraphicsConfiguration gc = screen.getDefaultConfiguration();
croppedImage = gc.createCompatibleImage(width, height, Transparency.BITMASK);
}
catch (Exception e)
{
new errorWindow(e, "crop, in Images");
}
if (croppedImage == null)
{
croppedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
}
int[] pixels = new int[width * height];
wholeImage.getRGB(xPos, yPos, width, height, pixels, 0, width);
croppedImage.setRGB(0, 0, width, height, pixels, 0, width);
return croppedImage;
}