小编典典

Crop image to smallest size by removing transparent pixels in java

java

I have a sprite sheet which has each image centered in a 32x32 cell. The
actual images are not 32x32, but slightly smaller. What I’d like to do is take
a cell and crop the transparent pixels so the image is as small as it can be.

How would I do that in Java (JDK 6)?

Here is an example of how I’m currently breaking up the tile sheet into cells:

BufferedImage tilesheet = ImageIO.read(getClass().getResourceAsStream("/sheet.png");
for (int i = 0; i < 15; i++) {
  Image img = tilesheet.getSubimage(i * 32, 0, 32, 32);
  // crop here..
}

My current idea was to test each pixel from the center working my way out to
see if it is transparent, but I was wondering if there would be a
faster/cleaner way of doing this.


阅读 296

收藏
2020-11-30

共1个答案

小编典典

I think this is exactly what you should do, loop through the array of pixels,
check for alpha and then discard. Although when you for example would have a
star shape it will not resize the image to be smaller be aware of this.

2020-11-30