无法将全尺寸图像从相机传递到下一个活动

时间:2015-06-23 12:31:47

标签: android android-camera

我想将图像从一个活动传递到另一个活动,这是我的代码:

  <activity android:name="com.example.DeeplinkActivity"
        android:screenOrientation="portrait"
        android:theme="@style/MyBaseTheme.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.BROWSABLE" />
            <category android:name="android.intent.category.DEFAULT" />

                         <!-- Accepts URIs that begin with "example://shelf” -->
            <!-- Currently handles Ads deeplink structure (iPhone structure) -->
            <data
                android:host="shelf"
                android:pathPrefix=""
                android:scheme="example" />

            <!-- Accepts URIs that begin with "example://com” -->
            <data
                android:host="com"
                android:pathPrefix=""
                android:scheme="example" />

            <!-- Accepts URIs that begin with http://www.example.com/some/sample/page.htm” -->
            <data
                android:host="www.example.com"
                android:pathPrefix="/some/sample/page.htm"
                android:scheme="http" />
        </intent-filter>
    </activity>

问题是我根本无法达到其他活动,在调试模式下我得到行startactivity(imagepass);并且不要去MainActivity2。 有人能帮助我吗?

2 个答案:

答案 0 :(得分:1)

首先,如果你真的想通过Intent传递你的位图,你需要首先将它转换为字节数组,因为Bitmap不能像那样附加Intent。

以下是https://stackoverflow.com/a/11010565/4651112

的执行方法

但是根据最佳做法,我建议你不要通过任何方式发送一个BITMAP 。发送文件名图像,让目标Activity从文件中解码它。它好多了。

答案 1 :(得分:0)

1)首先将图像转换为字节数组然后传入Intent,然后在下一个活动中从Bundle获取字节数组并转换为图像(位图)并设置为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 intent = new Intent(this, NextActivity.class);
intent.putExtra("picture", byteArray);
startActivity(intent);

从Bundle获取字节数组并转换为位图图像: -

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)将Bitmap传递给Intent并从bundle获取下一个活动中的位图,但问题是如果你的位图/图像大小很大,那时图像不会在下一个活动中加载