Step By Step(Java 2D图形篇<二>) (九)

2014-11-24 03:21:37 · 作者: · 浏览: 15
return;

57 g.drawImage(images[imageIndex], 0, 0, null);

58 imageIndex = (imageIndex + 1) % images.length;

59 }

60 }

3) 将一幅图像直接写入目标文件:

1 public class MyTest {

2 public static void main(String[] args) throws IOException {

3 writeToFile();

4 }

5 private static void writeToFile() throws IOException {

6 int width = 200, height = 200;

7 BufferedImage bi = new BufferedImage(width, height,

8 BufferedImage.TYPE_INT_ARGB);

9 Graphics2D g2 = bi.createGraphics();

10 g2.setColor(Color.red);

11 g2.fillRect(0, 0, width - 1, height - 1);

12 ImageIO.write(bi, "png", new File("D:/test.png"));

13 System.out.println("Over.");

14 }

15 }

4) 通过ImageWriter将多幅图像顺序写入目标文件:

1 public class MyTest {

2 public static void main(String[] args) throws IOException {

3 writeToFile();

4 }

5 private static void writeToFile() throws IOException {

6 int width = 200, height = 200;

7 BufferedImage bi = new BufferedImage(width, height,

8 BufferedImage.TYPE_INT_ARGB);

9 Color[] colors = { Color.red, Color.black, Color.blue, Color.yellow,

10 Color.gray, Color.green, Color.orange };

11 Graphics2D g2 = bi.createGraphics();

12 //1. 这里的操作和通过ImageReader读取多个文件时基本相同,

13 //只是换成了ImageWriter。

14 Iterator imageWriters = ImageIO

15 .getImageWritersByFormatName("gif");

16 ImageWriter imageWriter = imageWriters.next();

17 ImageOutputStream ios = ImageIO.createImageOutputStream(new File(

18 "D:/test.gif"));

19 imageWriter.setOutput(ios);

20 //2. 这里需要提前判断一下是否当前的写入器支持顺序写入多个图片的功能

21 if (imageWriter.canWriteSequence()) {

22 //3. 在顺序写入之前prepare必须调用,否则在写入的时候抛出异常

23 imageWriter.prepareWriteSequence(null);

24 //4. 开始顺序写入

25 for (Color c : colors) {

26 g2.setColor(c);

27 g2.fillRect(0, 0, width - 1, height - 1);

28 imageWriter.writeToSequence(new IIOImage(bi, null, null), null);

29 }

30 // 5. 结束写入,有些类似于数据库操作的事物,在操作后需要提交。

31 imageWriter.endWriteSequence();

32 }

33 imageWriter.dispose();

34 ios.close();

35 System.out.println("Over.");

36 }

37 }

5) 通过ImageIO.read()和ImageIO.write()方法进行图形文件格式转换:

这里只是给出从PNG到JPEG的例子,事实上其他类型的图像文件之间也可以通过该方式进行转换。

1 public class MyTest {

2 public static void main(String[] args) throws IOException {

3 convertFromPngToJpeg();

4 }

5 private static void convertFromPngToJpeg() throws IOException {

6 BufferedImage bufferedImage = ImageIO.read(new File("D:/desktop.png"));

7 BufferedImage destImage = new BufferedImage(100,100,BufferedImage.TYPE_INT_RGB);

8 Graphics2D g = destImage.createGraphics();

9