2017-01-23 18 views
0

これは私のコードです。私はonclickがイメージを次のアクティビティに送るもう一つのボタンをここに追加したいが、これを設定することはできない。私はどうすればいいのですか?Android ||あるアクティビティから別のアクティビティへ画像を解析する方法は?

public class MainActivity extends Activity { 
private static int RESULT_LOAD_IMG = 1; 
String imgDecodableString; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 

public void loadImagefromGallery(View view) { 
    // Create intent to Open Image applications like Gallery, Google Photos 
    Intent galleryIntent = new Intent(Intent.ACTION_PICK, 
      android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
    // Start the Intent 
    startActivityForResult(galleryIntent, RESULT_LOAD_IMG); 
} 



@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    try { 
     // When an Image is picked 
     if (requestCode == RESULT_LOAD_IMG && resultCode == RESULT_OK 
       && null != data) { 
      // Get the Image from data 

      Uri selectedImage = data.getData(); 
      String[] filePathColumn = { MediaStore.Images.Media.DATA }; 

      // Get the cursor 
      Cursor cursor = getContentResolver().query(selectedImage, 
        filePathColumn, null, null, null); 
      // Move to first row 
      cursor.moveToFirst(); 

      int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
      imgDecodableString = cursor.getString(columnIndex); 
      cursor.close(); 
      ImageView imgView = (ImageView) findViewById(R.id.imgView); 
      // Set the Image in ImageView after decoding the String 
      imgView.setImageBitmap(BitmapFactory 
        .decodeFile(imgDecodableString)); 

     } else { 
      Toast.makeText(this, "You haven't picked Image", 
        Toast.LENGTH_LONG).show(); 
     } 
    } catch (Exception e) { 
     Toast.makeText(this, "Something went wrong", Toast.LENGTH_LONG) 
       .show(); 
    } 

} 
+3

ファイル名を次のアクティビティに渡します。 –

+1

あなたは既に画像が含まれている文字列を持っている、ちょうど使用してそれを送る意思余分 – faruk

+0

私が使用して送信するためのコードを記述する意図extreが、{次のアクティビティます。public void nextActivity(ビュービュー)でそれを取得する方法を テントの意図=新しいインテント(this、DisplayActivity.class); intent.putExtra( "bmp_image"、imgDecodableString); startActivity(インテント); } –

答えて

0

をはじめ、新しく追加されたボタンの無効化を維持し、画像の文字列がボタンを有効にして、ボタンにonClickListenerを設定取得した後、onActivityResult方法で。また、そのイメージ文字列を意図的な目的を使って次のアクティビティに渡します。 onActivityResult方法で

newButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       startActivity(new Intent(getApplicationContext(),NextActivity.class).putExtra("img",imgDecodableString)); 
      } 
     }); 
+0

私はurコードを実装しました......そして次のアクティビティにジャンプし、そこに空白のページを取得します....そしてlogcatでこれを取得します。**キーimgが期待されますParcelableしかし値はjava.langでした.String。デフォルト値が返されました。 W/Bundle:生成された内部例外をキャストしようとしました:** –

+0

次のアクティビティで文字列を取得して、次のアクティビティでどのようなコードを書いていますか? –

+0

これは次のアクティビティのコードです---------------------------------> _ protected void onCreate(Bundle savedInstanceState ){ super.onCreate(savedInstanceState); ビットマップimgDecodeableString =(ビットマップ)this.getIntent()。getParcelableExtra( "img"); setContentView(R.layout.activity_display); イメージビューimgView =(ImageView)findViewById(R.id.imageView); imgView.setImageBitmap(imgDecodeableString); }} –

0

あなたは

Intent intent = new Intent(this, NewActivity.class); 
intent.putExtra("BitmapImage", bitmap); 

ようなあなたの最初の活動にデータを入れて、第二の活動に以下のようなデータを解析することができます

Intent intent = getIntent(); 
Bitmap bitmap = (Bitmap) intent.getParcelableExtra("BitmapImage"); 

あなたのImagePathが切り取らビットマップコードに変換するには、次のとおりです。

BitmapFactory.Options options = new BitmapFactory.Options(); 
     options.inPreferredConfig = Bitmap.Config.ARGB_8888; 
     Bitmap bitmap = BitmapFactory.decodeFile(imagePath, options); 
+0

解決策が正しく理解できない場合は、献金を与えないでください。インテントは、ビットマップを変換する必要があるイメージのデータを入れたい場合には、アクティビティ間の基本データ型のみを持つことができます。ありがとうございました !! –

+0

私はそれに専念します –

+0

それは大丈夫ですが、あなたはそれを回避する必要があります。あなたがイメージの小さなサイズを持っているなら、それはうまくいくでしょう。 –

0

//最初の活動

Bitmap b = null; 
String bitmapString = getStringFromBitmap(b); 
Intent intent = new Intent(this, MainActivity.class); 
intent.putExtra("bitmapString", bitmapString); 

// 2番目の活動

String receivedBitmapString = getIntent().getStringExtra("bitmapString"); 
     Bitmap receivedBitmap = getBitmapFromString(receivedBitmapString); 

//関数

private String getStringFromBitmap(Bitmap bitmapPicture) { 
    /* 
    * This functions converts Bitmap picture to a string which can be 
    * JSONified. 
    * */ 
    final int COMPRESSION_QUALITY = 100; 
    String encodedImage; 
    ByteArrayOutputStream byteArrayBitmapStream = new ByteArrayOutputStream(); 
    bitmapPicture.compress(Bitmap.CompressFormat.PNG, COMPRESSION_QUALITY, 
    byteArrayBitmapStream); 
    byte[] b = byteArrayBitmapStream.toByteArray(); 
    encodedImage = Base64.encodeToString(b, Base64.DEFAULT); 
    return encodedImage; 
    } 


    private Bitmap getBitmapFromString(String jsonString) { 
    /* 
    * This Function converts the String back to Bitmap 
    * */ 
    byte[] decodedString = Base64.decode(stringPicture, Base64.DEFAULT); 
    Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length); 
    return decodedByte; 
    } 

ソース:Link

関連する問題