java怎样用StringBuffer的二进制(图片转换的)生成ImageIcon对象?

yanjingrong 2013-07-30 04:22:09
java怎样用StringBuffer的二进制(图片转换的)生成ImageIcon对象?

我把图片转成了二进制代码,存在了StringBuffer中,我想把StringBuffer的内容直接生成ImageIcon,然后在swing的jpanel中显示,不通过写文件到磁盘的步骤
...全文
746 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
可乐罐 2013-08-02
  • 打赏
  • 举报
回复
为什么要用StringBuffer来存byte[]??????这个很奇怪啊
sunyiz 2013-08-02
  • 打赏
  • 举报
回复
你都 new 出一个 file 对象了, 为什么不直接通过 ImageIO 去 read 一个 BufferedImage 对象出来呢?
yanjingrong 2013-08-01
  • 打赏
  • 举报
回复
引用 9 楼 AA5279AA 的回复:

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; } }
失落夏天 2013-07-31
  • 打赏
  • 举报
回复

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对象 剩下的就容易了吧。 但不知道为啥,我总感觉这种得到的图片和原图不一样,
yanjingrong 2013-07-31
  • 打赏
  • 举报
回复
引用 4 楼 longtian1213 的回复:
试试取得二进制字节数组,然后使用ImageIcon(byte[] imageData) 生成一个ImageIcon对象!
能给几行关键代码么?我在网上找了,生成了ImageIcon,但是图片不显示
yanjingrong 2013-07-31
  • 打赏
  • 举报
回复
引用 5 楼 AA5279AA 的回复:
StringBuffer可以存二进制数组么? 你说这个二进制数组是什么型的? 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; }
跳蚤图 2013-07-31
  • 打赏
  • 举报
回复
失落夏天 2013-07-31
  • 打赏
  • 举报
回复
StringBuffer可以存二进制数组么? 你说这个二进制数组是什么型的? char[]? byte[]?
S117 2013-07-31
  • 打赏
  • 举报
回复
试试取得二进制字节数组,然后使用ImageIcon(byte[] imageData) 生成一个ImageIcon对象!
yanjingrong 2013-07-31
  • 打赏
  • 举报
回复
我要把内存中 二进制数转为图片 在swing的jpanel中显示
raistlic 2013-07-31
  • 打赏
  • 举报
回复
“我把图片转成了二进制代码” 有没有这一步具体的代码 如果 StringBuffer 里的内容格式无误,可以用 toString().getBytes() 得到 byte[]
yanjingrong 2013-07-30
  • 打赏
  • 举报
回复
求助了.............

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧