上下文: 我正在创建一个简单的应用程序,用户单击按钮,他们从手机中选择一张图片,图像将显示在应用程序中。我通过启动用户选择图像的意图来实现这一目标。
问题: 当用户选择图片时,如果是.jpg文件,则不显示。但是,如果它是.png文件,它会按预期工作。
注意: 我已经验证了Bitmap结果不为null并且logcat中没有错误或者来自decodefile方法的任何消息
非常感谢任何帮助
代码:
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (requestCode == SELECT_PICTURE)
{
Uri selectedImageUri = data.getData();
selectedImagePath = getPath(selectedImageUri);
Toast.makeText(getApplicationContext(), "path is " + selectedImagePath, Toast.LENGTH_LONG).show();
ImageView image = (ImageView)findViewById(R.id.selectedImage);
if (image == null)
Toast.makeText(getApplicationContext(), "No image to update", Toast.LENGTH_SHORT).show();
Bitmap result = BitmapFactory.decodeFile(selectedImagePath);
if (result == null)
Toast.makeText(getApplicationContext(), "Couldn't upload image because it's null", Toast.LENGTH_LONG).show();
image.setImageBitmap(result);
}
}
答案 0 :(得分:0)
您可以尝试使用InputStream吗?像这样:
if (requestCode == SELECT_PICTURE){
Uri selectedImageUri = data.getData();
InputStream inputStream;
try {
inputStream = getContentResolver().openInputStream(selectedImageUri );
BufferedInputStream bis = new BufferedInputStream(is);
Bitmap bitmap = BitmapFactory.decodeStream(bis);
ImageView image = (ImageView)findViewById(R.id.selectedImage);
image.setImageBitmap(bitmap);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
答案 1 :(得分:-1)
这很奇怪,但我的代码现在正在运行,但我没有改变任何东西。