各位蜘蛛辛苦了~本文章关键字为:PNG透明背景、代码修改图片、Java写PNG文件。
偶得一套PNG的Hero行走动画(感谢原作者),非常精细,骨头甚至喜欢,但是原图(hero.png)空白太多,放在手机里有点浪费。又不想麻烦美工,于是想自己用代码修改下,修改后如右图(hero_ok.png),
上代码:
/**
* resizePNG:Resize the PNG file.
*
* @author lazybone,2010.08.16
*
* @param fromFile
* @param fromW
* @param fromH
* @param toFile
* @param toW
* @param toH
*/
public static void resizePNG(String fromFile, int fromW, int fromH,
String toFile, int toW, int toH) {
try {
BufferedImage to = new BufferedImage(toW, toH,
BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = to.createGraphics();
to = g2d.getDeviceConfiguration().createCompatibleImage(toW, toH,
Transparency.TRANSLUCENT);
g2d.dispose();
g2d = to.createGraphics();
File f2 = new File(fromFile);
BufferedImage bi2 = ImageIO.read(f2);
Image from = bi2.getScaledInstance(fromW, fromH, bi2.SCALE_DEFAULT);
int a = 128;
int b = 128;
int tileCount = 8;
int offset = 50;
for (int i = 0; i < tileCount; i++)
for (int j = 0; j < tileCount; j++) {
g2d.drawImage(from, i * a - i * offset - offset / 2, j * a
- j * offset - offset / 2, i * a + a - i * offset
- offset / 2, j * a + a - j * offset - offset / 2,
i * b, j * b, i * b + b, j * b + b, null);
}
g2d.dispose();
ImageIO.write(to, "png", new File(toFile));
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws IOException {
System.out.println("Start");
int toSize = 624;
int fromSize = 1024;
resizePNG("d://hero.png", fromSize, fromSize, "d://hero_ok.png",
toSize, toSize);
System.out.println("OK");
}