Android头像上传和java服务端接收图片。

来源:互联网 发布:python黑帽子 pdf 编辑:程序博客网 时间:2024/05/01 19:34

    笔记。

真的是什么都不知道的状态下,java就学了的最最基本的内容,安卓学的马马虎虎,只能网上找找源码。这个方法可能不是最优的,但是是现在我能弄出来的。。。

    在csdn用了超多积分才找到的源码,只有安卓端的内容,并没有服务端。把两端合起来。做个笔记。这个可能还有一个bug,就是图像不会马上就在android显示出来,必须要刷新后才能显示出来。

安卓端的代码。

            ByteArrayOutputStream out = new ByteArrayOutputStream();

            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);// 如果不压缩是100,表示压缩率为0,写30 是压缩率,表示压缩70%;
            out.flush();
            out.close();
            Random r = new Random();
            int rannum = (int) (r.nextDouble() * (99999 - 10000 + 1)) + 10000; // 获取随机数
           


            byte[] buffer = out.toByteArray();
            byte[] encode = Base64.encode(buffer, Base64.DEFAULT);
            String photo = new String(encode);
            ImageName =  getStringToday() +rannum+ ".jpg";//根据现在时间和随机数将名字保存下来。


            RequestParams params = new RequestParams();
            params.put("photo", photo);
            params.put("ImageName", ImageName);//图片名称
            params.put("doc_img_id", ids);
            //Toast.makeText(getApplicationContext(), ids, Toast.LENGTH_SHORT).show();
            params.put("typename","xuesheng" );
            String url = "上传的地址";

            AsyncHttpClient client = new AsyncHttpClient();
            client.post(url, params, new AsyncHttpResponseHandler() {
                @Override
                public void onSuccess(int arg0, String arg1) {
                    // TODO Auto-generated method stub
                    super.onSuccess(arg0, arg1);
                    try {
                        if (arg0 == 200) {

                            Toast.makeText(Person_detail_control.this, "头像上传成功!", 0)
                                    .show();
                            //Toast.makeText(MainActivity.this, , 0).show();
                        } else {
                            Toast.makeText(Person_detail_control.this,
                                    "网络访问异常,错误码:" + arg0, 0).show();

                        }
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
                @Override
                public void onFailure(Throwable arg0, String arg1) {
                    // TODO Auto-generated method stub
                    super.onFailure(arg0, arg1);
                    Toast.makeText(Person_detail_control.this,
                            "网络访问异常,错误码  > " + arg0, 0).show();
                }


            });



服务器端接收图片的代码



    @Override
    public String execute() throws Exception {
        String phone=request.getParameter("photo");
        String ImageName=request.getParameter("ImageName");
        GenerateImage(phone,ImageName);
        System.out.println(phone);
        
        
        return NONE;
    }
    public static boolean GenerateImage(String imgStr,String ImageName) { // 对字节数组字符串进行Base64解码并生成图片
        if (imgStr == null) // 图像数据为空
        return false;
        BASE64Decoder decoder = new BASE64Decoder();
        try {
        // Base64解码
        byte[] b = decoder.decodeBuffer(imgStr);
        for (int i = 0; i < b.length; ++i) {
        if (b[i] < 0) {// 调整异常数据
        b[i] += 256;
        }
        }
        // 生成jpeg图片
        String imgFilePath = "E:\\Program Files\\Workspacessss\\HealthMotherWeb\\WebRoot\\image\\"+ImageName+".jpg";
        OutputStream out = new FileOutputStream(imgFilePath);
        out.write(b);
        out.flush();
        out.close();
        return true;
        } catch (Exception e) {
        return false;
        }
        }
   


0 0