Android 从相册选择图片显示不出来

YeJR_2016 2016-08-15 08:52:04
public class MainActivity extends ActionBarActivity {

private static final int TAKE_PHOTE = 0;
private static final int CROP_PHONE = 1;
private Button takePhoto;
private Button chooseFromAlbum;
private ImageView picture;
private Uri imageUri;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
takePhoto = (Button) findViewById(R.id.button);
chooseFromAlbum = (Button) findViewById(R.id.button2);
picture = (ImageView) findViewById(R.id.imageViewId);
takePhoto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 创建 File对象,用于存储拍照后的图片
File outputImage = new File(Environment.getExternalStorageDirectory(), "ImageTest.jpg");

try {
if (outputImage.exists()) {
outputImage.delete();
}
outputImage.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
// Uri获取文件资源
imageUri = Uri.fromFile(outputImage);
// 打开相机程序
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
// MediaStore.EXTRA_OUTPUT:用于指示内容解析器 ,imageUri :用于放置图片
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
// 启动相机程序
startActivityForResult(intent, TAKE_PHOTE);
}
});

chooseFromAlbum.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// 创建 File对象,用于存储拍照后的图片
File outputImage = new File(Environment.getExternalStorageDirectory(), "ImageTest.jpg");

try {
if (outputImage.exists()) {
outputImage.delete();
}
outputImage.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
// Uri获取文件资源
imageUri = Uri.fromFile(outputImage);
// Intent intent = new Intent("android.intent.action.PICK");
Intent intent = new Intent();
intent.setAction(Intent.ACTION_PICK);
//选择 图片
intent.setType("image/*");
//可裁剪
intent.putExtra("crop", true);
//按比例
intent.putExtra("scale", true);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(intent, CROP_PHONE);

}
});

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//这里处理的是请求码,即:在拍完后直接跳到剪裁
switch (requestCode) {
case TAKE_PHOTE:
if (resultCode == RESULT_OK) {
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(imageUri, "image/*");
intent.putExtra("scale", true);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
//打开裁剪
startActivityForResult(intent, CROP_PHONE);
}
break;
case CROP_PHONE:
if (resultCode == RESULT_OK) {
try {
//裁剪照片
Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri));
Log.d("图片路径", imageUri + "");
picture.setImageBitmap(bitmap);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
break;
}
}
}

不管是拍照还是从相册选择图片,在ImageView上都不能显示,并且看了下内存中创建了图片文件,可是大小是0kb 有人遇到过吗?
...全文
912 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xlyhr007 2016-08-16
  • 打赏
  • 举报
回复
先压缩,再保存
xjz729827161 2016-08-16
  • 打赏
  • 举报
回复
在裁剪的时候加上输出的大小,试试 intent.putExtra("outputX", HEIGHT_SIZE); intent.putExtra("outputY", WIDTH_SIZE);
moonFY 2016-08-16
  • 打赏
  • 举报
回复
选中图片后先压缩图片再显示,应该是OOM了

80,337

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧