如何从服务器到Android retriving的base64字符串(大图) [英] How to retriving base64 strings(large image) from server to android

查看:154
本文介绍了如何从服务器到Android retriving的base64字符串(大图)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要检索服务器上的所有尺寸,Android手机的形象参照的ID,让我试着用这下面的编码,并顺利拿到了基地64字符串,并检索到的图像等效base64string它工作正常,小尺寸的图像,但当我去大尺寸图片仍然黑屏无法通过此方法来获取屏幕上的大尺寸图像。

在此先感谢。

如何找回

大尺寸的base64通过SOAP对象从服务器字符串

 包com.imageload;

进口java.io.IOException异常;
进口java.util.StringTokenizer的;

进口org.ksoap2.SoapEnvelope;
进口org.ksoap2.serialization.SoapObject;
进口org.ksoap2.serialization.SoapPrimitive;
进口org.ksoap2.serialization.SoapSerializationEnvelope;
进口org.ksoap2.transport.HttpTransportSE;
进口org.xmlpull.v1.XmlPullParserException;

进口android.app.Activity;
进口android.content.Intent;
进口android.graphics.Bitmap;
进口android.graphics.BitmapFactory;
进口android.graphics.Typeface;
进口android.os.Bundle;
进口android.util.Base64;
进口android.view.View;
进口android.widget.Button;
进口android.widget.EditText;
进口android.widget.ImageView;
进口android.widget.TextView;
进口android.widget.Toast;

公共类ImageloadActivity延伸活动{
    / **第一次创建活动时调用。 * /

    私人按钮提交,CLR,分机;
    私人ImageView的ImageView的;
    私人TextView的机构,orderno,姓名,mobno,handeled,regdat,delvdat,PNAME,的pAMT,dirby,regby,delby;

    字符串VAl11难,val12,val13,val14;
    字符串str = NULL,STR2 = NULL;
    字符串错误=0,IID;


/ *私有静态最后弦乐SOAP_ACTION =htt​​p://tempuri.org/sta1;
    私有静态最后弦乐METHOD_NAME =STA1;
    私有静态最后弦乐NAMESPACE =htt​​p://tempuri.org/;
    私有静态最后字符串的URL =htt​​p://cyberstudents.in/newand//service.asmx";*/


    私有静态最后弦乐SOAP_ACTION =htt​​p://tempuri.org/IMAGE;
    私有静态最后弦乐METHOD_NAME =形象;
    私有静态最后弦乐NAMESPACE =htt​​p://tempuri.org/;
    //私有静态最后字符串的URL =htt​​p://cyberstudents.in/crdroid//service.asmx;
    私有静态最后字符串的URL =HTTP:///localdb/Service.asmx;


    @覆盖
    公共无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.main);


        this.orderno =(TextView中)this.findViewById(R.id.ordernoeditText);
        this.pname =(TextView中)this.findViewById(R.id.insTextView);
        this.submit =(按钮)this.findViewById(R.id.getbutton);
        this.clr =(按钮)this.findViewById(R.id.clearbutton);
        this.ext =(按钮)this.findViewById(R.id.Exitbutton);
        this.imageView =(ImageView的)findViewById(R.id.imageView1);

        orderno.setText(CB2-1112-CEA0883);


        this.submit.setOnClickListener(新View.OnClickListener(){

            公共无效的onClick(视图v){
                // TODO自动生成方法存根


                               IID = orderno.getText()的toString()。


                                如果(error.equals(0))
                                {
                                    SoapObject请求=新SoapObject(命名空间METHOD_NAME);
                                    SoapSerializationEnvelope包=新SoapSerializationEnvelope(SoapEnvelope.VER11);
                                    envelope.dotNet = TRUE;

                                    request.addProperty(ID,IID);
                                    envelope.setOutputSoapObject(要求);
                                    HttpTransportSE androidHttpTransport =新HttpTransportSE(URL);



                                        尝试
                                        {
                                            尝试
                                            {
                                                androidHttpTransport.call(SOAP_ACTION,包);


                                            }
                                            赶上(XmlPullParserException E)
                                            {
                                                // TODO自动生成的catch块
                                                e.printStackTrace();
                                            }

                                            SoapPrimitive结果=(SoapPrimitive)envelope.getResponse();
                                            //获取数据应该是基
                                            串resultData = result.toString();

                                            //pname.setText(resultData);

                                            byte []的德codedString = Base64.de code(resultData,Base64.DEFAULT);
                                            位图德codedByte = BitmapFactory.de codeByteArray(德codedString,0,德codedString.length);
                                            imageView.setImageBitmap(德codedByte);


                                        }
                                        赶上(IOException异常E)
                                        {
                                            // TODO自动生成的catch块
                                            e.printStackTrace();
                                        }

                                    }

                }
        });


        this.clr.setOnClickListener(新View.OnClickListener(){

            公共无效的onClick(视图v){
                // TODO自动生成方法存根

                pname.setText();


            }
        });

        this.ext.setOnClickListener(新View.OnClickListener(){

            公共无效的onClick(视图v){
                // TODO自动生成方法存根
                System.exit(0);
            }
        });





    }
}
 

它返回soapprimitive(结果),当它返回的图像大小比150KB或2500 * 3000渔政船

大空

  [WebMethod的]
    公共字符串的图像(字符串ID)
    {

SqlConnection的康恩=新的SqlConnection(数据源=;初始目录=;坚持安全信息= TRUE;用户ID = SA;);
        conn.Open();
        SqlDataAdapter的sdImageSource =新的SqlDataAdapter();
        sdImageSource.SelectCommand =新的SqlCommand(从ImagesStore选择的ImageData,其中ImageId =('+编号+'),康涅狄格州);
        数据集dsImage =新的DataSet();
        sdImageSource.Fill(dsImage);
        字节[]斑点=(字节[])dsImage.Tables [0] .Rows [0] [0];
        INT K = blob.Length;
        串c = Convert.ToBase64String(BLOB);
        返回℃;
}
 

解决方案

这是我的建议来存储的Base64图像中的服务器文件夹,并保存其在数据库路径,因此您可以轻松地检索

i have to retrieve image of all size from server to android mobile with reference to id ,so that i tried with this below coding and successfully got the base 64 string and retrieved image for equivalent base64string it works fine for small size images but when i go for big size image it remains black screen not able to get large size images on screen through this method.

thanks in advance.

how to retrieve

large size base64 string through soap object from a server

package com.imageload;

import java.io.IOException;
import java.util.StringTokenizer;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParserException;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Typeface;
import android.os.Bundle;
import android.util.Base64;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

public class ImageloadActivity extends Activity {
    /** Called when the activity is first created. */

    private Button submit,clr,ext;
    private ImageView imageView;
    private TextView institute,orderno,name,mobno,handeled,regdat,delvdat,pname,pamt,dirby,regby,delby;

    String val11,val12,val13,val14;
    String str = null,str2 = null;
    String error="0",IiD;


/*  private static final String SOAP_ACTION = "http://tempuri.org/sta1";
    private static final String METHOD_NAME = "sta1";
    private static final String NAMESPACE = "http://tempuri.org/";
    private static final String URL = "http://cyberstudents.in/newand//service.asmx";*/


    private static final String SOAP_ACTION = "http://tempuri.org/IMAGE";
    private static final String METHOD_NAME = "IMAGE";
    private static final String NAMESPACE = "http://tempuri.org/";
    //private static final String URL = "http://cyberstudents.in/crdroid//service.asmx";
    private static final String URL = "http:///localdb/Service.asmx";


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);


        this.orderno=(TextView)this.findViewById(R.id.ordernoeditText);
        this.pname=(TextView)this.findViewById(R.id.insTextView);
        this.submit=(Button)this.findViewById(R.id.getbutton);
        this.clr=(Button)this.findViewById(R.id.clearbutton);
        this.ext=(Button)this.findViewById(R.id.Exitbutton);
        this.imageView =(ImageView) findViewById(R.id.imageView1);

        orderno.setText("CB2-1112-CEA0883");


        this.submit.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub


                               IiD=orderno.getText().toString();    


                                if(error.equals("0"))
                                {
                                    SoapObject request = new SoapObject(NAMESPACE,METHOD_NAME);
                                    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
                                    envelope.dotNet=true;

                                    request.addProperty("ID",IiD);                                                                              
                                    envelope.setOutputSoapObject(request);
                                    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);



                                        try
                                        {
                                            try 
                                            {
                                                androidHttpTransport.call(SOAP_ACTION, envelope);


                                            } 
                                            catch (XmlPullParserException e)
                                            {
                                                // TODO Auto-generated catch block
                                                e.printStackTrace();
                                            }   

                                            SoapPrimitive result =  (SoapPrimitive)envelope.getResponse();
                                            //to get the data should be a base
                                            String resultData = result.toString();

                                            //pname.setText(resultData);

                                            byte[] decodedString = Base64.decode(resultData, Base64.DEFAULT);
                                            Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
                                            imageView.setImageBitmap(decodedByte);


                                        } 
                                        catch (IOException e)
                                        {
                                            // TODO Auto-generated catch block
                                            e.printStackTrace();
                                        }

                                    }

                }
        });


        this.clr.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub

                pname.setText("");


            }
        });

        this.ext.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub
                System.exit(0);
            }
        });





    }
}

It returns null for soapprimitive(result) when it returns image size bigger than 150kb or 2500*3000 dimention

[WebMethod]
    public string  IMAGE(string ID)
    {

SqlConnection conn = new SqlConnection("Data Source=;Initial Catalog=;Persist Security Info=True;User ID=sa;");
        conn.Open();
        SqlDataAdapter sdImageSource = new SqlDataAdapter();
        sdImageSource.SelectCommand = new SqlCommand("select ImageData from ImagesStore where ImageId=('" + ID + "')", conn);
        DataSet dsImage = new DataSet();
        sdImageSource.Fill(dsImage);
        byte[] blob = (byte[])dsImage.Tables[0].Rows[0][0];
        int k = blob.Length;
        string c = Convert.ToBase64String(blob);
        return c;
}

解决方案

It is my advice to store the Base64 image in a server folder and save its path in database so you can retrieve it easily

这篇关于如何从服务器到Android retriving的base64字符串(大图)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆