• convert image to base64 and post to RESTful wcf


    1.in wcf side,build RESTful wcf

    this step,you can reference http://www.cnblogs.com/tuolin/archive/2012/01/10/2318058.html

    2.in android side,using phonegap 

    package com.sangeco.garden;

    import android.os.Bundle;

    import com.phonegap.DroidGap;
    import com.sangeco.biz.JsBridge;


    public class WebActivity extends DroidGap {
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    super.init();
    JsBridge jsBridge=new JsBridge(this,appView);
    appView.addJavascriptInterface(jsBridge, "jsBridge");
    super.loadUrl("file:///android_asset/html/pot.html");
    }

    }
    package com.sangeco.biz;

    import java.io.ByteArrayOutputStream;
    import java.io.InputStream;
    import java.util.UUID;

    import org.json.JSONException;
    import org.json.JSONObject;

    import com.phonegap.DroidGap;

    import android.R.integer;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.graphics.Matrix;
    import android.net.Uri;
    import android.util.Base64;
    import android.webkit.WebView;

    public class JsBridge {
    private WebView webView;
    private DroidGap mGap;

    public JsBridge(DroidGap gap, WebView view) {
    this.mGap = gap;
    this.webView = view;
    }

    public JsBridge() {
    }

    public String getBase64Image(String src) {
    String base64 = "";
    try {

    // FileInputStream fInputStream = new FileInputStream(imgFile);
    // fInputStream.read(content, 0, size);
    // String base64 = Base64.encodeToString(content, Base64.DEFAULT);
    Uri imgUri = Uri.parse(src);
    InputStream inputStream = mGap.getContentResolver()
    .openInputStream(imgUri);

    Bitmap bm=BitmapFactory.decodeStream(inputStream);
    // 获得图片的宽高
    int width = bm.getWidth();
    int height = bm.getHeight();
    // 设置想要的大小

    int newWidth = 400;
    int newHeight = height*newWidth/width;
    // 计算缩放比例
    float scaleWidth = ((float) newWidth) / width;
    float scaleHeight = ((float) newHeight) / height;
    // 取得想要缩放的matrix参数
    Matrix matrix = new Matrix();
    matrix.postScale(scaleWidth, scaleHeight);
    // 得到新的图片
    Bitmap newbm = Bitmap.createBitmap(bm, 0, 0, width, height, matrix,true);
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    newbm.compress(Bitmap.CompressFormat.JPEG, 100, baos); //bm is the bitmap object
    byte[] content = baos.toByteArray();

    // int length = inputStream.available();
    // byte[] content = new byte[length];
    // inputStream.read(content, 0, length);
    base64 = Base64.encodeToString(content, Base64.DEFAULT);

    } catch (Exception e) {
    // TODO Auto-generated catch block
    base64 = e.getLocalizedMessage();
    e.printStackTrace();
    }
    return base64;
    }

    public String uploadImage(String wcf, String src) {
    String rtnVal = "";
    String filename=UUID.randomUUID().toString()+".png";
    try {
    JSONObject obj = new JSONObject();
    obj.put("name", filename);
    obj.put("content", getBase64Image(src));
    obj.put("type", "png");
    obj.put("id", "");
    JSONObject image = new JSONObject();
    image.put("image", obj);
    String json = new JsonTruck().doPost(wcf, image);
    JSONObject jsonObject=new JSONObject(json);
    rtnVal=jsonObject.getString("UploadResult");
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    return rtnVal;
    }

    public String downloadImage() {
    return null;

    }

    }




    3.in html,javascipt call java method,and jquery

    <!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes, minimum-scale=1.0, maximum-scale=1.0">
    <title>add pot page</title>

    </head>
    <body>
    <h1>Add pot</h1>
    <div>
    <img src='../image/404.png' id='test' style='300px'>
    <ul>
    <li ontouchstart="camera();">
    <img src='../image/camera.png'/>
    </li>
    <li ontouchstart="getPhoto(pictureSource.PHOTOLIBRARY);">
    <img src='../image/file.png'/>
    </li>
    </ul>
    </div>
    <div>
    <h1>pot name</h1>
    <input type="text" id="name"/>
    </div>
    <div>
    <h1>pot price</h1>
    <input type="text" id="price"/>
    </div>
    <div>
    <h1>pot description</h1>
    <textarea cols='25' rows='10' id='desc' ></textarea>
    </div>
    <div>
    <h1>note</h1>
    <textarea cols='25' rows='10' id='note' ></textarea>
    </div>

    <div>
    <input type='button' value='save' id="btnSave">
    <img src='' id='test2' width='150px' height='150px'/>
    </div>

    <script type='text/javascript' src='../js/jquery-1.7.1.min.js'></script>
    <script type='text/javascript' src='../js/phonegap-1.4.1.js'></script>
    <script type='text/javascript' src='../js/wcf.js'></script>
    <script type='text/javascript' src='../js/camera.js'></script>
    <script type='text/javascript'>
    var pictureSource; // picture source
    var destinationType; // sets the format of returned value
    // Wait for PhoneGap to connect with the device
    //
    document.addEventListener("deviceready", onDeviceReady, false);
    function onDeviceReady(){
    pictureSource
    = navigator.camera.PictureSourceType;
    destinationType
    = navigator.camera.DestinationType;
    }

    $(
    function(){
    $(
    "#btnSave").bind('touchstart', function(){
    var img_name=window.jsBridge.uploadImage("http://192.168.1.100/gardener/photo/upload",IMG_SRC);
    alert(img_name);
    if(img_name!=null&&img_name!=""&&img_name!="error"){
    var json = {
    pot: {
    id:
    '',
    name: $(
    '#name').val(),
    price: $(
    '#price').val(),
    desc: $(
    '#desc').val(),
    img: img_name,
    note: $(
    '#note').val()
    }
    };
    wcf
    ="http://192.168.1.100/gardener/gardener/AddPot";
    alert(JSON.stringify(json));

    doPost(wcf,json);
    }
    downloadImage(img_name);
    });
    });
    </script>
    </body>
    </html>
    var WCF = "http://192.168.1.100/gardener/photo";
    function uploadImage(img){
    $.ajax({
    type: "POST",
    contentType: "application/json",
    data: '',
    url: WCF + "/upload",
    success: function(msg){
    alert(msg.AddPotResult);
    },
    beforeSend: function(){
    alert('');
    },
    error: function(xhr){
    alert('error');
    }
    });

    }

    function downloadImage(src){
    var wcfUrl = WCF + "/download/" + src;
    var img = $("#test2");
    $.ajax({
    type: "GET",
    contentType: "application/json",
    url: wcfUrl,
    success: function(msg){
    alert(msg.DownloadResult);
    img.attr("src", "data:image/png;base64," + msg.DownloadResult);
    },
    beforeSend: function(){
    alert(wcfUrl);
    },
    error: function(xhr){
    img.attr("src", "../image/camera.png");
    }
    });
    return img;
    }

    function doPost(wcfUrl, jsonData){
    $.ajax({
    type: "POST",
    contentType: "application/json",
    url: wcfUrl,
    data: JSON.stringify(jsonData),
    success: function(msg){
    alert('ok');
    },
    beforeSend: function(){
    alert('doPost method is called');
    },
    error: function(xhr){
    alert('error');
    }
    });
    }




  • 相关阅读:
    JAVA-初步认识-常用对象API(StringBuffer类-插入删除查找修改)
    JAVA-初步认识-常用对象API(StringBuffer类-特点添加功能)
    JAVA-初步认识-常用对象API(String类-练习1)
    JAVA-初步认识-常用对象API(String类-常见功能-intern方法)
    JAVA-初步认识-常用对象API(String类-常见功能-比较)
    JAVA-初步认识-常用对象API(String类-常见功能-判断)
    JAVA-初步认识-常用对象API(String类-常见功能-转换)
    JAVA-初步认识-常用对象API(String类-常见功能-获取-2)
    arcengine导出复本
    PC软件分享
  • 原文地址:https://www.cnblogs.com/tuolin/p/2429939.html
Copyright © 2020-2023  润新知