TA的每日心情 | 开心 2021-3-12 23:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
本文章关键字为:PNG透明背景、代码修改图片、java写PNG文件。 偶得一套PNG的Hero行走动画(感谢原作者),非常精细,骨头甚至喜欢,但是原图(hero.png)空白太多,放在手机里有点浪费。又不想麻烦美工,于是想自己用代码修改下,修改后如右图(hero_ok.png), 上代码:- import javax.imageio.ImageIO;
- import java.io.File;
- import java.io.IOException;
- import java.awt.image.BufferedImage;
- import java.awt.Image;
- import java.awt.Graphics2D;
- import java.awt.Transparency;
- public class TestPNG{
-
- /**
- * 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");
- }
- }
-
复制代码
源码下载:http://file.javaxxz.com/2014/10/28/235549312.zip |
|