1

重複の可能性:
あるアクティビティから別のアクティビティに画像を渡す

私のアプリは次のロジックを使用しています。アクティビティAでボタンをクリックすると、写真/ビデオが撮影された後(ユーザーがカメラウィンドウで[保存]を押した後)、電話のカメラが起動します。アクティビティBが開始します。そのアクティビティBには、撮影した写真/ビデオのプレビューと、httpリクエストを介してメディアデータをアップロードする可能性が含まれています。撮影した画像/ビデオをアクティビティBに渡す方法がわかりません。結果をアクティビティBに配信する必要があるため、アクティビティAでStartActivityForResultを使用してカメラを起動できません。これを行うためのアイデアはありますか?

4

2 に答える 2

2

この問題を解決するための3つの解決策があります。

1)最初に画像をバイト配列に変換してからインテントに渡し、次のアクティビティでバンドルからバイト配列を取得して画像(ビットマップ)に変換し、ImageViewに設定します。

ビットマップをバイト配列に変換します:-

Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();

バイト配列をインテントに渡します:-

Intent intent = new Intent(this, NextActivity.class);
intent.putExtra("picture", byteArray);
startActivity(intent);

バンドルからバイト配列を取得し、ビットマップイメージに変換します:-

Bundle extras = getIntent().getExtras();
byte[] byteArray = extras.getByteArray("picture");

Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
ImageView image = (ImageView) findViewById(R.id.imageView1);

image.setImageBitmap(bmp);

2)最初に画像をSDCardに保存し、次のアクティビティでこの画像をImageViewに設定します。

3)ビットマップをインテントに渡し、バンドルから次のアクティビティでビットマップを取得しますが、問題は、その時点でビットマップ/画像サイズが大きい場合、次のアクティビティで画像が読み込まれないことです。

于 2012-12-12T11:59:03.460 に答える
0

1つ:最初に画像をSDCardに保存し、次のアクティビティでこの画像をImageViewに設定します。

2:バイト配列に保存して次のアクティビティに渡すこともできます。

    Intent A1 = new Intent(this, NextActivity.class);
    A1.putExtra("pic", byteArray);
    startActivity(A1);

次に、2番目のインテントで、バンドルからバイト配列を取得し、ビットマップイメージに変換します。

于 2012-12-12T10:49:36.780 に答える