首页 > Web开发 > 详细

获取Assets目录下的图片显示并上传

时间:2015-03-28 23:02:28      阅读:461      评论:0      收藏:0      [点我收藏+]
  1 package com.jingle.getlocal;
  2 
  3 import java.io.ByteArrayOutputStream;
  4 
  5 import java.io.InputStream;
  6 
  7 import org.apache.http.Header;
  8 
  9 import sun.misc.BASE64Encoder;
 10 
 11 import com.loopj.android.http.AsyncHttpClient;
 12 import com.loopj.android.http.AsyncHttpResponseHandler;
 13 import com.loopj.android.http.RequestParams;
 14 
 15 
 16 import android.app.Activity;
 17 import android.content.res.AssetManager;
 18 import android.graphics.Bitmap;
 19 import android.graphics.BitmapFactory;
 20 
 21 import android.os.Bundle;
 22 import android.util.Log;
 23 import android.view.View;
 24 import android.view.View.OnClickListener;
 25 import android.widget.Button;
 26 import android.widget.ImageView;
 27 
 28 public class MainActivity extends Activity {
 29     private String UPLOAD_URL = "http://192.168.1.101:8080/Login//servlet/UploadImg";
 30 
 31     @Override
 32     protected void onCreate(Bundle savedInstanceState) {
 33         super.onCreate(savedInstanceState);
 34         setContentView(R.layout.activity_main);
 35 
 36         initImg();
 37         initBtnUploadImg();
 38 
 39     }
 40 
 41     private void initBtnUploadImg() {
 42         Button btn = (Button) findViewById(R.id.btn);
 43         btn.setOnClickListener(new OnClickListener() {
 44 
 45             public void onClick(View v) {
 46                 uploadImg();
 47             }
 48         });
 49     }
 50 
 51     private void uploadImg() {
 52         AsyncHttpClient client = new AsyncHttpClient();
 53         client.setTimeout(3000);
 54         RequestParams params = new RequestParams();
 55         //获取Bitmap对象
 56         Bitmap bmp = getImg("orca.jpg");
 57         //获取字节数组输出流
 58         ByteArrayOutputStream baos = new ByteArrayOutputStream();
 59         //压缩Bitmap对象到字节数组输出流
 60         bmp.compress(Bitmap.CompressFormat.JPEG, 90, baos);
 61         //将字节数组输出流转为字节数组
 62         byte[] ba = baos.toByteArray();
 63         //将字节数组编码成字符串
 64         String str = new BASE64Encoder().encode(ba);
 65         params.put("img", str);
 66 
 67         client.post(UPLOAD_URL, params, new AsyncHttpResponseHandler() {
 68             public void onSuccess(int arg0, Header[] arg1, byte[] arg2) {
 69                 Log.i("ace", "post ok..");
 70             }
 71 
 72             public void onFailure(int arg0, Header[] arg1, byte[] arg2,
 73                     Throwable arg3) {
 74                 arg3.printStackTrace();
 75             }
 76         });
 77 
 78     }
 79 
 80     private void initImg() {
 81         ImageView img = (ImageView) findViewById(R.id.img);
 82         img.setImageBitmap(getImg("orca.jpg"));//assets目录下文件名
 83     }
 84 
 85     //获取图片的Bitmap对象
 86     private Bitmap getImg(String file) {
 87         Bitmap bmp = null;
 88         //获取AssetsMng对象
 89         AssetManager am = getResources().getAssets();
 90         try {
 91             //打开文件,返回输入流
 92             InputStream is = am.open(file);
 93             //Bitmap工厂解码输入流,得到bmp对象
 94             bmp = BitmapFactory.decodeStream(is);
 95             is.close();
 96         } catch (Exception e) {
 97             e.printStackTrace();
 98         }
 99         return bmp;
100     }
101 
102 }

服务器端:

 1 package action;
 2 
 3 import java.io.FileOutputStream;
 4 import java.io.IOException;
 5 import java.io.OutputStream;
 6 import java.io.PrintWriter;
 7 
 8 import javax.servlet.ServletException;
 9 import javax.servlet.http.HttpServlet;
10 import javax.servlet.http.HttpServletRequest;
11 import javax.servlet.http.HttpServletResponse;
12 
13 import sun.misc.BASE64Decoder;
14 
15 
16 
17 
18 public class UploadImg extends HttpServlet {
19 
20     private static final long serialVersionUID = -8236824851962797021L;
21 
22     public void doGet(HttpServletRequest request, HttpServletResponse response)
23             throws ServletException, IOException {
24         response.setContentType("text/html");
25         doPost(request, response);
26     }
27 
28     public void doPost(HttpServletRequest request, HttpServletResponse response)
29             throws ServletException, IOException {
30         
31         System.out.println("do post..");
32         String imgStr = request.getParameter("img");
33         //将字符串解码为字节数组
34         byte[] imgByte = new BASE64Decoder().decodeBuffer(imgStr);
35         //新建文件输出流
36         OutputStream os = new FileOutputStream("E:\\up.jpg");
37         //输出流写入字节数组
38         os.write(imgByte);
39         os.close();
40         
41         PrintWriter out = response.getWriter();
42         out.flush();
43         out.close();
44     }
45 
46 }

 

获取Assets目录下的图片显示并上传

原文:http://www.cnblogs.com/jinglecode/p/4374859.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!