我目前正在进行故障报告页面,最终用户可以通过使用相机捕捉或从图库中选择照片来报告image
。我不确定为什么,但是当使用相机拍摄image
时,height
和width
返回的220
约为180
,这是非常模糊的图片。我曾尝试在线查找其他教程,但我的代码似乎与其他代码相同。不太确定它是我的手机还是什么。
我的Camera Intent代码:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, REQUEST_CAMERA);
从相机中捕获图像后的代码:
thumbnail = (Bitmap) data.getExtras().get("data");
bytes = new ByteArrayOutputStream();
thumbnail.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
ivImage.setVisibility(View.VISIBLE);
ivImage.setImageBitmap(thumbnail);
我尝试在压缩之前和之后获取width
和height
,两者都返回相同的值。
答案 0 :(得分:0)
可能你不应该压缩图像而只是简单地使用BitmapFactory.decodeFile(filePath)
或任何合适的方法将你的图像从文件转换为bitmap
(如果还没有),然后将位图对象设置为ImageResource是这样的:
Bitmap bitmap = BitmapFactory.decodeFile(filePath);
mImageView.setImageBitmap(bitmap);
并且不要简单地输入从意图收到的数据。据我所知,相机活动类,它将返回捕获图像的URI。尝试像onActivityResult()
这样收到它:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode != RESULT_OK) return;
if (requestCode == REQUEST_CAMERA) {
Uri photoUri = data.getData();
// Calculate the bitmap here according to the width of the device
((ImageView) findViewById(R.id.captured_image)).setImageBitmap(bitmap);
}
super.onActivityResult(requestCode, resultCode, data);
}