如何将本地图片文件,转成字节码流后
然后再 转成对象 用于 网络传输呢?
------解决方案--------------------
javax.imageio.*;
里面的方法也许有用:
BufferedImage bImage = new BufferedImage(image.getWidth(), image
.getHeight(), BufferedImage.TYPE_INT_ARGB);
ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
ImageIO.write(bImage, format, out);
} catch (IOException e) {
e.printStackTrace();
}
byte [] b = out.toByteArray();
b传过去,再转成图像,用FileOutpurStream 就好啦
FileOutputStream fos = new FileOutputStream(file);
for (int i = 0; i < b.length; i++) {
fos.write(b[i]);
}
fos.flush();
------解决方案--------------------
为什么不用字节流直接传输?
如果把字节流转成对象,然后再网络传输,就是串行化操作了
这个对象应该实现串行化接口
关于串行化
------解决方案--------------------
看看
------解决方案--------------------
将文件转成字节流就可以传输了,不用转成对象再传输,这样会更麻烦。
使用文件IO操作,就可以将文件读取成字节流(字节数组)。
传输的话,要看楼主要用什么方式传了。
------解决方案--------------------
------解决方案--------------------
小文件,直接读成字节数组,进行传输就行。
楼主说,你那里已经有线程的传输框架,不知道具体传输对象,使用的是什么类。
如果使用的是JDK中的ObjectOutputSteam的实现类对象的话,write方法就可以传输字节数组。
在Java当中,JDK所提供的文件类,没有实现Serializable接口,是不能够序列化的,
所以不能直接进行对象传输。但文件可以读取成字节数组,进行传输。
小文件,可以一次性读取到内存中,然后直接调用相关方法就可以传输。
大文件,要想办法实现文件的随机访问与传输。
如果楼主的框架不是使用的ObjectOutputStream进行传输,那就请楼主找找,有没有类似传输字节数组的方法。如果没有,楼主可以把字节数组封装的一个实现Serializable接口的类里面,这样,传输这个对象到服务端就可以了。
------解决方案--------------------
不知道lz是怎么像你说的传图像的
------解决方案--------------------
28楼的代码,其实还是可以优化一下的。比如,File对象,可以获得文件的大小(所占字节数)。
然后根据文件大小,创建一个byte[],然后直接把数据读到数组里就可以了,没必要创建那个out缓冲区。
------解决方案--------------------
帮顶
------解决方案--------------------
我是不是再揿一下别的门钉?”令狐申怯生生地说,目光从三个伙伴身上掠过。他还是称之为“门钉”,实际上,他已确凿无疑地弄明白了:这是放映全息电影的一个个按钮。
------解决方案--------------------
------解决方案--------------------
学习!
------解决方案--------------------
路过,我不太懂
------解决方案--------------------
友情帮顶
------解决方案--------------------
java socket可以完成
------解决方案--------------------
.
------解决方案--------------------
看来我理解错意思啦
------解决方案--------------------
很好,学习了,谢谢各位
------解决方案--------------------
很好,学习了,谢谢各位
------解决方案--------------------