1

私はクライアントサーバー通信に取り組んでいます。ユーザーはギャラリーから画像を選択できます。選択した画像は、ローカル DB とサーバー DB の 2 つの場所に保存されます。ユーザーが画像を保存すると、選択した画像はパス (文字列) でローカル データベースに保存され、サーバー データベースにも保存されます。問題は、画像バイト配列を取得して文字列にエンコードし、画像をサーバー側に渡す方法がわからないことです。

ローカル DB : 画像 -> パス(文字列) (これで完了) サーバー DB : 画像 -> バイト -> 文字列 -> サーバーに送信

これがコードです..

    Bundle extras = getIntent().getExtras();

    if (extras != null) {
        id=extras.getInt("id");
        inputname.setText(extras.getString("name"));
        inputnote.setText(extras.getString("note"));

        image = extras.getString("blob");


        //Convert image into string to save path in local DB
        BitmapFactory.Options op=new BitmapFactory.Options();
        op.inSampleSize=8;
        yourSelectedImage = BitmapFactory.decodeFile(image, op);
        inputphoto.setImageBitmap(yourSelectedImage);

    }

saveItem メソッドで blob を設定する方法..?

private void saveItem() {

    // Client-Server - Start //////////////////////////////////////
    String name = inputname.getText().toString();
    String description = inputnote.getText().toString();
    // Encode the image file to String !! by using Base64
    String encodedImage = Base64.encodeToString(blob, Base64.DEFAULT);

    // Building Parameters
    List<NameValuePair> params1 = new ArrayList<NameValuePair>();
    params1.add(new BasicNameValuePair("name", name));
    params1.add(new BasicNameValuePair("description", description));
    params1.add(new BasicNameValuePair("photo",encodedImage));

    Log.v("log_tag", System.currentTimeMillis()+".jpg");


    // getting JSON Object
    // Note that create product url accepts POST method
    JSONObject json = jsonParser.makeHttpRequest(url_create_product, "POST", params1);

    // check log cat fro response
    Log.d("Create Response", json.toString());

    // check for success tag
    try {
        int success = json.getInt(TAG_SUCCESS);


        Log.v("log_tag", "In the try Loop" );

        if (success == 1) {
            // closing this screen
            finish();
        } else {
            // failed to create product
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }

前もって感謝します。

4

1 に答える 1

2

画像を文字列に変換するには、次の短いコードを使用します。

ByteArrayOutputStream baos = new ByteArrayOutputStream();  
yourbitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
//this will convert image to byte[] 
byte[] byteArrayImage = baos.toByteArray(); 
// this will convert byte[] to string
String encodedImage = Base64.encodeToString(byteArrayImage, Base64.DEFAULT);

これで、イメージのencodingImage文字列ができました。

「saveItem()」のコードは次のようになります。

private void saveItem() {

    // Client-Server - Start //////////////////////////////////////
    String name = inputname.getText().toString();
    String description = inputnote.getText().toString();
    // Encode the image file to String !! by using Base64
    //String encodedImage = Base64.encodeToString(blob, Base64.DEFAULT);
    ByteArrayOutputStream baos = new ByteArrayOutputStream();  
    yourbitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
    //this will convert image to byte[] 
    byte[] byteArrayImage = baos.toByteArray(); 
    // this will convert byte[] to string
    String encodedImage = Base64.encodeToString(byteArrayImage, Base64.DEFAULT);

    // Building Parameters
    List<NameValuePair> params1 = new ArrayList<NameValuePair>();
    params1.add(new BasicNameValuePair("name", name));
    params1.add(new BasicNameValuePair("description", description));
    params1.add(new BasicNameValuePair("photo",encodedImage));

    Log.v("log_tag", System.currentTimeMillis()+".jpg");


    // getting JSON Object
    // Note that create product url accepts POST method
    JSONObject json = jsonParser.makeHttpRequest(url_create_product, "POST", params1);

    // check log cat fro response
    Log.d("Create Response", json.toString());

    // check for success tag
    try {
        int success = json.getInt(TAG_SUCCESS);


        Log.v("log_tag", "In the try Loop" );

        if (success == 1) {
            // closing this screen
            finish();
        } else {
            // failed to create product
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }
于 2013-06-07T09:43:04.270 に答える