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


    在某些时候 项目需求中需要实现图片上传和图片获取功能 我需要把图片转换成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();

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

  • 相关阅读:
    Splashtop :符合 HIPAA 标准的远程桌面软件
    学生如何在家中访问学校许可的软件
    Splashtop用于远程实验室的功能得到增强
    docker环境安装,镜像和容器常用命令
    vue-cli入门
    webpack快速入门
    Vue路由vue-router
    Vue组件化
    Vue指令
    Vue实例
  • 原文地址:https://www.cnblogs.com/JunXiao/p/2680522.html
Copyright © 2020-2023  润新知