android xml文件中进行上传图片以及获取图片
16lz
2021-01-26
在某些时候 项目需求中需要实现图片上传和图片获取功能 我需要把图片转换成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();
如果需要批量上传图片 需要改动。
更多相关文章
- Android(安卓)自定义TextView实现宫格布局,Drawable添加图片并控
- 领略千变万化的Android(安卓)Drawable (一)
- Android——selector背景选择器
- Android解码/显示/播放Gif图片动画
- Android(安卓)Training Caching Bitmaps 翻译
- android无法转换字符串到整型
- 检索Android图片库并显示详细信息
- Android——数据存储(四种方式之二)读写SD卡
- Android(安卓)调用系统相机返回data为null