您的位置:首页 > 移动开发 > Android开发

android xml文件中进行上传图片以及获取图片

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

上传之前的步骤:

一、将图片转换为byte[]

File files=new File(getFilesDir(), "cameranew.jpg");
InputStream ins=new FileInputStream(files);
BitmapUtil util=new BitmapUtil();
Bitmap mapBitmap=util.getBitmapFormStream(ins);
ByteArrayOutputStream outputStream2=new ByteArrayOutputStream();
mapBitmap.compress(Bitmap.CompressFormat.JPEG,100, outputStream2);
outputStream2.flush();
outputStream2.close();
byte[] bys=outputStream2.toByteArray();


二、把byte[]进行Base64

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


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

public void xmlwrite(String bytes) throws Exception{
File file=new File(getFilesDir(),"photos1.xml");
FileOutputStream outputStream=new FileOutputStream(file);
XmlSerializer xmlSerializer=Xml.newSerializer();
xmlSerializer.setOutput(outputStream, "UTF-8");
xmlSerializer.startDocument("UTF-8", true);
xmlSerializer.startTag(null, "NewDataset");
xmlSerializer.startTag(null, "Table");
xmlSerializer.startTag(null, "photo");
xmlSerializer.text(bytes);
xmlSerializer.endTag(null, "photo");
xmlSerializer.endTag(null, "Table");
xmlSerializer.endTag(null, "NewDataset");
xmlSerializer.endDocument();
outputStream.close();
}


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

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

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

二、解析xml

public String xmlread() throws Exception{
String bytr=null;
File file=new File(getFilesDir(),"photos1.xml");
InputStream inputStream=new FileInputStream(file);
XmlPullParser pullParser=Xml.newPullParser();
pullParser.setInput(inputStream, "UTF-8");
int event=pullParser.getEventType();
while (event!=XmlPullParser.END_DOCUMENT) {
switch(event){
case XmlPullParser.START_DOCUMENT:
break;
case XmlPullParser.START_TAG:
if("photo".equals(pullParser.getName())){
bytr=pullParser.nextText();
}
break;
case XmlPullParser.END_TAG:
break;
}
event=pullParser.next();
}
return bytr;
}


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

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


四、存到本地

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


如果需要批量上传图片 需要改动。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: