當前位置:首頁 » 編程語言 » 載入圖片java

載入圖片java

發布時間: 2024-10-16 06:43:42

java程序中圖片的使用方法

使用圖像根據需要,可以有多種方法。
如果是放在組件中,如JButton、JLabel中,這些組件需要的是Icon介面的圖像,那麼使用ImageIcon類來載入圖像比較好,new
ImageIcon(String
filename)或new
ImageIcon(URL
location)都可以直接載入圖像文件。
甚至你還可以先用IO讀出byte流,也能用byte[]創建ImageIcon。還可以由已有的Image來創建。
更為高級的用法是,你還可以先創建個空的ImageIcon,然後重寫paintIcon(Component,Graphics,int,int)方法實現手工繪制!
如果你是要完成圖像繪制,那麼使用Image或BufferedImage比較好。
Toolkit.getDefaultToolkit().getImage(String或URL)就能載入圖像。
這種方法需要一個圖像觀察者來監視圖像是否載入完成,因為圖像載入是非同步的。通常,你用一個swing組件就可以充當這個角色。不過少用JLabel,因為我有一個程序用JLabel做觀察者CPU佔用率經常90%多,有時不出界面。用JPanel或JFrame都沒出過這個問題。從API文檔看,應該是所有的swing可視組件都實現了觀察者介面。
選了觀察者後,不用刻意觀察載入情況,很簡單的一個方法:swing組件的while(!prepareImage(Image));就可以了。
Image介面是Graphics類繪圖drawImage要用的,所以繪制時應該選這個。
BufferedImage是實現了Image介面的圖像,可以直接操作像索數據!所以利用演算法生成圖像再繪制,或圖像處理可以使用這種方法。如浮雕、反色等。
載入方法是ImageIO類的read方法。

❷ java如何讀取文件夾中的圖片並在界面顯示

下面給你提供一個實現,該實現採用了代理模式。這個實現包含兩個文件,分別是Client.java和ImageIcoProxy.java,ImageIcoProxy.java負責了圖片的延遲載入,你可以修改為不延遲即可。

Client.java的代碼為:
import java.awt.Graphics;
import java.awt.Insets;

import javax.swing.Icon;
import javax.swing.JFrame;

public class Client extends JFrame {
private static int IMG_WIDTH = 510;
private static int IMG_HEIGHT = 317;
private Icon imgProxy = null;
public static void main(String[] args) {
Client app = new Client();
app.setVisible(true);
}

public Client() {
super("Virture Proxy Client");
imgProxy = new ImageIcoProxy("D:/test.jpg", IMG_WIDTH, IMG_HEIGHT);
this.setBounds(100, 100, IMG_WIDTH + 10, IMG_HEIGHT + 30);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void paint(Graphics g) {
super.paint(g);
Insets insets = getInsets();
imgProxy.paintIcon(this, g, insets.left, insets.top);
}
}

ImageIcoProxy.java的代碼為:
import java.awt.Component;
import java.awt.Graphics;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.SwingUtilities;

public class ImageIcoProxy implements Icon {

private ImageIcon realIcon = null;
private String imgName;
private int width;
private int height;
boolean isIconCreated = false;
public ImageIcoProxy(String imgName, int width, int height) {
this.imgName = imgName;
this.width = width;
this.height = height;
}

public int getIconHeight() {
return realIcon.getIconHeight();
}

public int getIconWidth() {
return realIcon.getIconWidth();
}

public void paintIcon(final Component c, Graphics g, int x, int y) {
if (isIconCreated) {
//已經載入了圖片,直接顯示
realIcon.paintIcon(c, g, x, y);
g.drawString("Just Test", x + 20, y + 370);
} else {
g.drawRect(x, y, width-1, height-1);
g.drawString("Loading photo...", x+20, y+20);
synchronized(this) {
SwingUtilities.invokeLater(new Runnable() {

public void run() {
try {
Thread.currentThread().sleep(2000);
realIcon = new ImageIcon(imgName);
isIconCreated = true;
} catch (Exception e) {
e.printStackTrace();
}
c.repaint();
}

}
);
}
}
}

}

❸ Java 如何載入圖片到graphics2D上,用Image類好還是BufferedImage類好

一般都用那個bufferImage,下面是一個例子程序:

img = ImageIO.read(new File("img1.jpg"));
int width=img.getWidth();
int height=img.getHeight();
int type = img.getColorModel().getTransparency();
BufferedImage image1 = new BufferedImage(width, height, type);
Graphics2D graphics2D = image1.createGraphics();
graphics2D.setRenderingHint(
RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
graphics2D.setColor(Color.black);
graphics2D.fillRect(20, 20, 160, 160);
graphics2D.rotate(Math.toRadians(30),width/2,height/2);
graphics2D.drawImage(img, 10, 10, 100,100,null);
graphics2D.dispose();

❹ 怎樣在java里用URL引入圖片

讀取圖片可以有以下兩種方法:x0dx0a①:ImageIO.read(new File("這里可以寫目錄,比如您提到的src/images/某張圖片名"));x0dx0a②:new ImageIcon("目錄").getImage();x0dx0a這兩個方法都返回一個圖片對象。可以用一個Image對象接收一下。x0dx0ax0dx0a相對路徑是指您所運行的程序的包 所在的文件夾開始的路徑。x0dx0a一般來說,上面兩種讀取方法讀取時,是從項目的目錄下開始找文件的。x0dx0a所以,您把圖片放在src下的images包中,正確的讀取方法應該是:x0dx0aImage img=ImageIO.read(new File("src/images/圖片名"));或者x0dx0aImage img=new ImageIcon("src/images/圖片名").getImage();x0dx0a得到這樣一個Image對象後,就可以使用了。

❺ JAVA如何用Graphics載入圖片

Image i=Toolkit.getDefaultToolkit().getImage("圖片路徑和名稱");
g.drawImage(i, 四個位置參數, this);

熱點內容
linux是實時系統嗎 發布:2024-11-24 07:23:17 瀏覽:142
java數據挖掘演算法 發布:2024-11-24 07:18:59 瀏覽:853
我的世界伺服器怎麼重開指令 發布:2024-11-24 07:14:13 瀏覽:155
python刪除dataframe 發布:2024-11-24 07:05:38 瀏覽:734
安卓機藍牙怎麼傳東西 發布:2024-11-24 06:58:34 瀏覽:108
android疊效果 發布:2024-11-24 06:58:33 瀏覽:991
富士通電腦伺服器設置u盤啟動 發布:2024-11-24 06:56:21 瀏覽:716
delphipython 發布:2024-11-24 06:51:24 瀏覽:866
安卓手機如何添加文字 發布:2024-11-24 06:50:54 瀏覽:567
小米存儲位置設置 發布:2024-11-24 06:45:10 瀏覽:207