我有2 imageView
从gallery
导入图片并设置在这些imageViews上。我基本上是这样做的:
String mPicPath1, mPicPath2;
protected void onCreate(Bundle icicle) {
mPicPath1 = null;
mPicPath2 = null;
}
@Override
protected void onActivityResult(int requestCode, int resultcode, Intent data){
super.onActivityResult(requestCode, resultcode, data);
switch(requestCode){
case 1:
if (data != null && resultcode == RESULT_OK)
{
Uri selectedImage = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
mPicPath1 = cursor.getString(columnIndex);
cursor.close();
logoview.setBackgroundResource(0);
logoview.setImageBitmap(BitmapFactory.decodeFile(mPicPath1));
}
break;
case 2:
if (data != null && resultcode == RESULT_OK)
{
Uri selectedImage = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
cursor.moveToFirst();
mPicPath2 = cursor.getString(columnIndex);
cursor.close();
qrcodeview.setBackgroundResource(0);
qrcodeview.setImageBitmap(BitmapFactory.decodeFile(mPicPath2));
}
break;
}
我使用按钮onClickListener
启动意图并转到SecondActivity
:
save=(Button)findViewById(R.id.save);
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(NewCard.this, Template.class);
if (!TextUtils.isEmpty(mPicPath1)) {
intent.putExtra("picture_path1", PicPath1);
}
if (!TextUtils.isEmpty(mPicPath2)) {
intent.putExtra("picture_path2", PicPath2);
}
startActivity(intent);
}
});
我的SecondActivity
在2个不同的imageViews
上设置图片:
String pre_img_path1= getIntent().getStringExtra("picture_path1");
ImageView crdlogoframe = (ImageView) findViewById(R.id.crdlogoframe);
crdlogoframe.setImageBitmap(BitmapFactory.decodeFile(pre_img_path1));
String pre_img_path2= getIntent().getStringExtra("picture_path2");
ImageView crdqrframe = (ImageView) findViewById(R.id.crdqrframe);
crdqrframe.setImageBitmap(BitmapFactory.decodeFile(pre_img_path2));
所以我的问题是关于图像的文件大小或分辨率。如果我从画廊拍摄2张高分辨率图像(由标准相机拍摄:1992kb,3264x2448),然后点击我的保存(save.onClickListener)按钮,我收到Force Close
错误。如果我拍摄小尺寸图像没有问题(74kb,800x600)我可以继续SecondActivity
并查看图像设置。我怎么能解决这个问题。当我选择或设置时,我应该使用语法来调整图像大小。格式均为.Jpeg
。非常感谢你。
答案 0 :(得分:0)
我还没有代表评论呢......但是西蒙说你的图像大到31MB需要尝试保持大约16MB以下的东西所以你必须重新调整大小才能显示它们
答案 1 :(得分:0)
而不是
BitmapFactory.decodeFile(mPicPath2)
您需要使用类似
的内容BitmapFactory.decodeFile(mPicPath2, options)
其中,选项是BitmapFactory.Options
的一个实例,其中inSampleSize
设置为类似4,可以在加载图像时缩小图像。