Java中可以用java.awt.Toolkit类打开gif,jpg,png三种类型的二进制图片文件,如果是其它类型的图片,需要转成上述格式的图片才行。
成都创新互联从2013年创立,是专业互联网技术服务公司,拥有项目网站制作、做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元港南做网站,已为上家服务,为港南各地企业和个人服务,联系电话:13518219792
我给你一个例子你看看吧。
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class LoadFromAppli extends Frame {
private static final long serialVersionUID = 1L;
Image im;
//构造函数
public LoadFromAppli(){
//根据地址装入图片
im=Toolkit.getDefaultToolkit().getImage("bg.png");//bg.png处写你的图片的绝对或相对路径
//关闭窗口
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
//在Frame上显示图片
public void paint(Graphics g){
g.drawImage(im, 0, 0, this);
}
public static void main(String[] args) {
LoadFromAppli f = new LoadFromAppli();
f.setSize(200,200);
f.setVisible(true);
}
}
1.把2个图象文件放到CLASS的同一目录下
2.改成绝对路径
——————————————————————————————
是不是图片路径不对。你把图片放在C盘根目录下面。然后
pic1=getImage(getDocumentBase(),"c:/a.gif");
pic2=getImage(getDocumentBase(),"c:/b.gif");
这样试试看。
回答者: lafaelz - 试用期 一级 5-3 16:26
这个兄弟 虽然你是绝对路径 但是拼错了。。。 要有转义的
pic2=getImage(getDocumentBase(),"c://b.gif");
都要有2个/ 要不认不出来 /是转义符号
实现思路:无论是何种类型,都是转换为流的形式进行的文件传输和存储。
可以通过BufferedReader 流的形式进行流缓存,之后通过readLine方法获取到缓存的内容。
BufferedReader bre = null;
OutputStreamWriter pw = null;//定义一个流
try {
String file = "D:/test/test.GIF";
bre = new BufferedReader(new FileReader(file));//此时获取到的bre就是整个文件的缓存流
pw = new OutputStreamWriter(new FileOutputStream(“D:/New.GIF”),"GBK");//确认流的输出文件和编码格式,此过程创建了“test.GIF”实例
while ((str = bre.readLine())!= null) // 判断最后一行不存在,为空结束循环
{
pw.write(str);//将要写入文件的内容,可以多次write
};
bre.close();
pw.close();//关闭流
备注:文件流用完之后必须及时通过close方法关闭,否则会一直处于打开状态,直至程序停止,增加系统负担。
完全可以,程序如下,这里把图片和程序放在一块,不放在一起的话。
代码Icon icon=new ImageIcon("1.gif");//要给出图片的完整的路径。
图片资源:
import java.awt.*;
import javax.swing.*;
public class JFrameTest extends JFrame{
/**
* @param args
*/
private static final long serialVersionUID=1L;
JFrameTest(String name){
super(name);
this.setSize(200, 200);//设置窗口大小。
this.setBackground(Color.DARK_GRAY);//设置背景颜色。
this.setLayout(new FlowLayout());//设置顺序布局。
Container con=this.getContentPane();//获取容器。
//设置按钮,为按钮添加图片。
Icon icon=new ImageIcon("1.gif");//根据路径取出图片。
JButton button=new JButton("带图片的按钮",icon);
con.add(button);//添加按钮。
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);//设置默认的关闭方式。
}
public static void main(String[] args) {
JFrameTest test=new JFrameTest("按钮");
test.setVisible(true);
}
}
运行结果:
1-把GifView.jar加入你的项目。
2-在xml中配置GifView的基本属性,GifView继承自View类,和Button、ImageView一样是一个UI控件。如:
view plaincopy to clipboardprint com.ant.liao.GifView android:id="@+id/gif2"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:paddingTop="4px" android:paddingLeft="14px" android:enabled="false" /$amp;amp;$nbsp;
com.ant.liao.GifView android:id="@+id/gif2"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:paddingTop="4px" android:paddingLeft="14px" android:enabled="false" /
3-在代码中配置常用属性:
view plaincopy to clipboardprint // 从xml中得到GifView的句柄
gf1 = (GifView) findViewById(R.id.gif1);
// 设置Gif图片源
gf1.setGifImage(R.drawable.gif1);
// 添加监听器
gf1.setOnClickListener(this);
// 设置显示的大小,拉伸或者压缩
gf1.setShowDimension(300, 300);
// 设置加载方式:先加载后显示、边加载边显示、只显示第一帧再显示
gf1.setGifImageType(GifImageType.COVER);
// 从xml中得到GifView的句柄
gf1 = (GifView) findViewById(R.id.gif1);
// 设置Gif图片源
gf1.setGifImage(R.drawable.gif1);
// 添加监听器
gf1.setOnClickListener(this);
// 设置显示的大小,拉伸或者压缩
gf1.setShowDimension(300, 300);
// 设置加载方式:先加载后显示、边加载边显示、只显示第一帧再显示
gf1.setGifImageType(GifImageType.COVER);
GifView的Jar包共有四个类:
GifAction.java
观察者类,监视GIF是否加载成功
GifFrame.java
里面三个成员:当前图片、延时、下张Frame的链接。
GifDecoder.java
解码线程类
GifView.java
主类,包括常用方法,如GifView构造方法、设置图片源、延迟、绘制等。