在某些时候 项目需求中需要实现图片上传和图片获取功能 我需要把图片转换成byte[]封装在xml中 将xml文件加压后上传到.NET WCF服务中

上传之前的步骤:

一、将图片转换为byte[]

1                 File files=new File(getFilesDir(), "cameranew.jpg");2                 InputStream ins=new FileInputStream(files);3                 BitmapUtil util=new BitmapUtil();4                 Bitmap mapBitmap=util.getBitmapFormStream(ins);5                 ByteArrayOutputStream outputStream2=new ByteArrayOutputStream();6                 mapBitmap.compress(Bitmap.CompressFormat.JPEG,100, outputStream2);7                 outputStream2.flush();8                 outputStream2.close();9                 byte[] bys=outputStream2.toByteArray();

二、把byte[]进行Base64

1                 String strings=android.util.Base64.encodeToString(bys, 0);//Base64很重要

三、把经过Bas64处理后返回的字符串写进xml文件中:

 1    public void xmlwrite(String bytes) throws Exception{ 2         File file=new File(getFilesDir(),"photos1.xml"); 3         FileOutputStream outputStream=new FileOutputStream(file); 4         XmlSerializer xmlSerializer=Xml.newSerializer(); 5         xmlSerializer.setOutput(outputStream, "UTF-8"); 6         xmlSerializer.startDocument("UTF-8", true); 7         xmlSerializer.startTag(null, "NewDataset"); 8         xmlSerializer.startTag(null, "Table"); 9         xmlSerializer.startTag(null, "photo");10         xmlSerializer.text(bytes);11         xmlSerializer.endTag(null, "photo");12         xmlSerializer.endTag(null, "Table");13         xmlSerializer.endTag(null, "NewDataset");14         xmlSerializer.endDocument();15         outputStream.close();16     }

接下来的ksoap调用WCF 就省略了 其他文章有详细记录 传到WCF服务端后 按着我们相反的过程进行处理 就可以存到服务端指定的文件夹下了

获取服务端图片,WCF端以我们这里上传的步骤一样的,这个过程如下:解压-----解析xml-----对解析后的字符串进行Base64处理-----将图片存到本地

一、解压 (见其他文章)略

二、解析xml

 1     public String xmlread() throws Exception{ 2         String bytr=null; 3         File file=new File(getFilesDir(),"photos1.xml"); 4         InputStream inputStream=new FileInputStream(file); 5         XmlPullParser pullParser=Xml.newPullParser(); 6         pullParser.setInput(inputStream, "UTF-8"); 7         int event=pullParser.getEventType(); 8         while (event!=XmlPullParser.END_DOCUMENT) { 9              switch(event){10              case XmlPullParser.START_DOCUMENT:11                  break;12              case XmlPullParser.START_TAG:13                  if("photo".equals(pullParser.getName())){14                     bytr=pullParser.nextText();15                  }16                  break;17              case XmlPullParser.END_TAG:18                  break;19              }20              event=pullParser.next();21         }22         return bytr;23     }

三、对字符串进行Base64处理后返回byte[]

1                 String str=xmlread();2                 byte[] bys=android.util.Base64.decode(str, 0);

四、存到本地

1 File files=new File(getFilesDir(), "photo_a.jpg");2                 FileOutputStream phoneOutStream=new FileOutputStream(files);3                 phoneOutStream.write(bts, 0, bts.length);4                 phoneOutStream.close();

如果需要批量上传图片 需要改动。

更多相关文章

  1. Android(安卓)自定义TextView实现宫格布局,Drawable添加图片并控
  2. 领略千变万化的Android(安卓)Drawable (一)
  3. Android——selector背景选择器
  4. Android解码/显示/播放Gif图片动画
  5. Android(安卓)Training Caching Bitmaps 翻译
  6. android无法转换字符串到整型
  7. 检索Android图片库并显示详细信息
  8. Android——数据存储(四种方式之二)读写SD卡
  9. Android(安卓)调用系统相机返回data为null

随机推荐

  1. Javascript面向对象入门
  2. DOM编程
  3. Juqery就是这么简单
  4. python入门教程12-03 (python语法入门之进
  5. 客户关系管理系统
  6. PHP-FPM参数调优
  7. 权限管理系统
  8. chattr使用
  9. 一文带你学会AQS和并发工具类的关系
  10. JY06用户组权限管理