java怎样用StringBuffer的二进制(图片转换的)生成ImageIcon对象?我把图片转成了二进制代码,存在了StringBuffer中,我想把StringBuffer的内容直接生成ImageIcon,然后在swing的jpanel中显示,不通过写文件到磁盘的步骤
解决方案 »
- 我安装了JAVA有2个文件:jdk1.6.0_10和jre6,用360卸载了再安装只有jdk1.6.0_10文件没有jre6这个文件了,求牛人指点,真心感谢!
- 用过JAI的朋友请进
- 一个关于JAVA继承和重载的问题
- 数据如何能做到定长输出,Java有没有相应的API
- SWT Table能不能做出这种效果
- 如何给树添加右键弹出菜单呢?而且要根据不同级别的节点弹出不同的菜单
- 如何验证文本框内的类型
- 关于Method方法访问失败的问题的探究
- 对比这两个程序!!!!!!!很相似的
- java基础问题,小妹先谢谢了
- 如何用JAVA读取一个txt文件中的n个元素,并把它们让到Data数组里
- 请求高手点拨一个JavaSE的基功问题
你说这个二进制数组是什么型的?
char[]?
byte[]?
我的代码:
public static StringBuilder getbuffer() throws IOException{
// StringBuilder bf=new StringBuilder();
String path = "c://2013-08.jpg";
File file = new File(path); FileInputStream fis = new FileInputStream(file);
byte[] b = new byte[fis.available()];
StringBuilder str = new StringBuilder();//不建议用String fis.read(b); for(byte bs:b)
{
str.append(Integer.toBinaryString(bs));//转换为二进制
}
String str2=str.toString();
System.out.println(str2.substring(0, 60));
return str;
}
能给几行关键代码么?我在网上找了,生成了ImageIcon,但是图片不显示
public Object getObject(byte[] b) {
Object o=null;
try {
ByteArrayInputStream bais = new ByteArrayInputStream(b);
ObjectInputStream ois;
ois = new ObjectInputStream(bais);
o =ois.readObject();
// ArrayList str = (ArrayList) ois.readObject(); //读取类
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return o;
}
能帮你把字节转化成一个File对象
剩下的就容易了吧。
但不知道为啥,我总感觉这种得到的图片和原图不一样,
package picToBin;import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;import javax.imageio.ImageIO;
import javax.swing.JPanel;class ImagePanel extends JPanel { private BufferedImage image; public ImagePanel() {
try {
byte[] b=fileT0Byte();
File file=(File) getObject(b);
image = ImageIO.read(file);
//image = ImageIO.read(new File("c:\\rose.jpg"));
} catch (IOException ex) {
// handle exception...
}
} @Override
public void paintComponent(Graphics g) {
g.drawImage(image, 0, 0, null);
}
public static byte[] fileT0Byte() throws IOException { String path = "c://2013-08.jpg";
File file = new File(path); FileInputStream fis = new FileInputStream(file);
byte[] b = new byte[fis.available()];
fis.read(b);//写入到byte数组
return b; }
public static Object getObject(byte[] b) {
Object o=null;
try {
ByteArrayInputStream bais = new ByteArrayInputStream(b);
ObjectInputStream ois;
ois = new ObjectInputStream(bais);
o =ois.readObject();
// ArrayList str = (ArrayList) ois.readObject(); //读取类
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return o;
}
}
为什么不直接通过 ImageIO 去 read 一个 BufferedImage 对象出来呢?