【发布时间】:2019-04-29 17:50:01
【问题描述】:
我正在开发一个查看图像不同属性的 Android 应用程序,我注意到如果我从尺寸为 1920x1080 的 JPG 图像开始,然后通过打开图库并选择适当的图像将该图像作为位图上传到我的应用程序中,位图尺寸为 1024x576。我没有声明位图的宽度或高度,虽然我最终将位图设置为 imageView,但是当我在代码中设置断点之前,尺寸仍然很低。
我的图像会失去分辨率吗?
如何在不牺牲分辨率的情况下将图像作为位图导入?
以下是将我的图像从手机外部存储导入我的应用程序的代码
public void openGallery(View v){
runStop = false;
mHandler.removeCallbacks(mStartScan);
mStreamButton.setText("Start stream");
Intent myIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(myIntent, 100);
ppm = 0;
numberOfDots = 0;
if (countParticles.equals(true)){
mDots.setText(null);
mPpm.setText(null);
}
uploadedImage = true;
//listItems.clear();
// mAdapter.notifyDataSetChanged();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 100 && resultCode == RESULT_OK && data!=null){
Uri imageUri = data.getData();
try{
imageBitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(),imageUri);
}catch (IOException e)
{
e.printStackTrace();
}
mImageView.setImageBitmap(imageBitmap);
if (processImage.equals(true)){
convertToGray();
}
}
}
下面是两个相同点的放大比较。 Android Studio 调试器允许查看位图,但不能复制或保存,所以我能做的最好的就是打印屏幕,同时在我的屏幕上打开两个图像。
【问题讨论】:
-
使用 JPEG 也会影响图像质量。
-
您可以创建一个简单的例程,在客户端将 1920x1080 JPG 转换为 1920x1080 BMP。然后您可以将 BMP 文件发送到服务器端。这可能是在数据传输阶段不牺牲分辨率的一种可能的解决方法。
-
@Employee 我认为我的问题比你想象的要简单。我确实通过 wifi 交换数据,但对于这个特定问题,我正在查看下载到手机上的图像。它们来自同一来源并自动保存为 1920x1080 JPG 文件。我只是不明白为什么上传图片时我的尺寸会改变
-
您如何确定
imageBitmap是1024x576? -
@greeble31 调试时可以看到大小。我第一次注意到是在考虑裁剪其中一张图片时发现的。
标签: java android opencv image-processing bitmap