当前位置:首页 » 编程语言 » 加载图片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);

热点内容
存储空间不足某些系统功能 发布:2024-10-16 17:59:24 浏览:240
你是怎么做资产配置的 发布:2024-10-16 17:58:46 浏览:869
南京社保原始密码是什么 发布:2024-10-16 17:58:00 浏览:917
为什么叫波斯密码 发布:2024-10-16 17:42:16 浏览:371
linux文件共享samba 发布:2024-10-16 17:41:30 浏览:825
有密码的压缩文件 发布:2024-10-16 17:28:19 浏览:726
115浏览器视频缓存 发布:2024-10-16 17:22:59 浏览:674
家里密码锁忘记了如何设置新密码 发布:2024-10-16 17:21:28 浏览:98
如何清除微信浏览器缓存 发布:2024-10-16 17:07:19 浏览:596
安卓转苹果为什么要付99块钱 发布:2024-10-16 16:43:57 浏览:121