图片传输问题,IO操作

图片传输问题,IO操作
2011年08月01日
  原题:
  将本地图片文件,转成字节码流后,然后再 转成对象 用于 网络传输
  几个得分的回复:
  (1) 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 0){ bao.write(buff); } bao.close(); bis.close(); buff=bao.toByteArray();//将图片文件转换为字节数组//buff数组存储的是图片1.JPG的字节码 ByteArrayInputStream asis=new ByteArrayInputStream(buff); BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("d:/2.jpg")); byte[] temp=newbyte[1]; while((asis.read(temp))>0){ bos.write(temp); } asis.close(); bos.flush(); bos.close(); }catch(Exception e){ e.printStackTrace(); } } }
  (5) 楼主给出的代码: 问题应该是解决了,我的文件比较小,我准备用字节数组传输 写了代码,大家看看; 最后利用现有的传对象的方法 将字节数组传输到服务端 存为文件 public class TestFile { /** *@param args *@throws IOException*/ public static void main(String[] args)throws IOException{ // int byteread = 0; // File file = new File("2.GIF"); // InputStream is = new FileInputStream(file); // byte[] buffer = new byte[1024]; // while ((byteread = is.read(buffer)) != -1) {//一次读1444个字节放入buffer数组中 // System.out.println(is.read(buffer)); // } File file=new File("2.GIF");byte[] b= getBytesFromFile(file); getFileFromBytes(b,"22.jpg"); } public static byte[] getBytesFromFile(File file){ byte[] ret=null; try{ if (file==null){ // log.error("helper:the file is null!"); return null; } FileInputStream in=new FileInputStream(file); ByteArrayOutputStream out=new ByteArrayOutputStream(4096); byte[] b=newbyte[4096]; int n; while ((n= in.read(b))!=-1){ out.write(b,0, n); } in.close(); out.close(); ret= out.toByteArray(); }catch (IOException e){ // log.error("helper:get bytes from file process error!"); e.printStackTrace(); } return ret; } public static File getFileFromBytes(byte[] b, String outputFile){ File ret=null; BufferedOutputStream stream=null; try{ ret=new File(outputFile); FileOutputStream fstream=new FileOutputStream(ret); stream=new BufferedOutputStream(fstream); stream.write(b); }catch (Exception e){ // log.error("helper:get file from byte process error!"); e.printStackTrace(); }finally{ if (stream!=null){ try{ stream.close(); }catch (IOException e){ // log.error("helper:get file from byte process error!"); e.printStackTrace(); } } } return ret; } }
  
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值