1. 程式人生 > >Java小遊戲DanceWithStars(二):修改本地文件中的圖片(圖片寬高和圖片型別)以及將圖片設定為JButton的影象

Java小遊戲DanceWithStars(二):修改本地文件中的圖片(圖片寬高和圖片型別)以及將圖片設定為JButton的影象

1. 修改本地文件中的圖片(圖片寬高和圖片型別)

為了使下載的圖片素材都具有統一的width和height,需要對下載來的圖片重新處理並另存

主要思想是:構造一個BufferedImage物件,用ImageIO.read()讀入,再用ImageIO.write()重畫

程式碼如下:

 1 package dws1;
 2 
 3 import java.awt.image.BufferedImage;
 4 import java.io.File;
 5 import java.io.IOException;
 6 import javax.imageio.ImageIO;
 7
8 public class Pictures { 9 //找到儲存路徑 10 static String IMAGE_PATH = "C:\\Users\\Yi\\eclipse-workspace\\DWS\\src\\dws1"; 11 12 //構造一個BufferedImage物件 13 public static BufferedImage oldImg; 14 15 public static void main(String[] args) { 16 17 //讀入圖片 18 try
{ 19 oldImg = ImageIO.read(new File(IMAGE_PATH + "\\trophy.png")); 20 } catch (IOException e) { 21 // TODO Auto-generated catch block 22 e.printStackTrace(); 23 } 24 25 //新建一個newImg物件,width和height都是100 26 BufferedImage newImg= new
BufferedImage(100, 100, BufferedImage.TYPE_INT_BGR); 27 28 29 //把原來的圖片oldImg畫入新圖片newImg中 30 newImg.(oldImg, 0, 0, 100, 100, null); 31 32 33 //將新生成的圖片自定義字尾名,且自定義路徑,存入文件中 34 try { 35 ImageIO.write(newImg, "jpg", new File(IMAGE_PATH+ "\\trophyP.jpg")); 36 } catch (IOException e) { 37 // TODO Auto-generated catch block 38 e.printStackTrace(); 39 } 40 41 42 } 43 }

結果如下:

trophyP.jpg是trophy.png修改後的結果,從而與其他圖示(如competitor1.jpg和competitor2.jpg)有一樣的大小(100x100)和字尾名(.jpg),從而便於在JFrame上add。

2.將圖片設定為JButton的影象

 1 import javax.swing.Icon;
 2 import javax.swing.ImageIcon;
 3 import javax.swing.JButton;
 4 import javax.swing.JFrame;
 5 
 6 public class c {
 7     static String IMAGE_PATH = "C:\\Users\\Yi\\eclipse-workspace\\DWS\\src\\dws1";
 8 
 9     public static void main(String args[]) {
10         JFrame frame = new JFrame("DefaultButton");
11         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
12         Icon warnIcon = new ImageIcon(IMAGE_PATH + "\\trophyP.jpg");
13         JButton button2 = new JButton(warnIcon);
14         frame.add(button2);
15         frame.setVisible(true);
16         frame.pack();
17     }
18 }

結果如下: