我正在尝试从外部存储加载图像。我设置权限,我尝试了不同的方式,但没有一个工作。
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap bitmap = BitmapFactory.decodeFile(file.toString());
tv.setImageBitmap(bitmap);
和这一个,
FileInputStream streamIn = new FileInputStream(file);
Bitmap bitmap = BitmapFactory.decodeStream(streamIn);
tv.setImageBitmap(bitmap);
streamIn.close();
答案 0 :(得分:22)
如果我在abc.jpg
上有文件sdcard
,那么:
String photoPath = Environment.getExternalStorageDirectory() + "/abc.jpg";
并获得bitmap
。
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap bitmap = BitmapFactory.decodeFile(photoPath, options);
或
Bitmap bitmap1 = BitmapFactory.decodeFile(photoPath);
以避免内存不足错误我建议您使用以下代码...
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 8;
final Bitmap b = BitmapFactory.decodeFile(photoPath, options);
为避免上述问题,您可以使用 Picasso (适用于Android的强大图片下载和缓存库)
如何?
Picasso.with(context).load("file:///android_asset/DvpvklR.png").into(imageView2);
Picasso.with(context).load(new File(...)).into(imageView3);
答案 1 :(得分:4)
File sdCard = Environment.getExternalStorageDirectory();
File directory = new File (sdCard.getAbsolutePath() + "/Pictures");
File file = new File(directory, "image_name.jpg"); //or any other format supported
FileInputStream streamIn = new FileInputStream(file);
Bitmap bitmap = BitmapFactory.decodeStream(streamIn); //This gets the image
streamIn.close();
答案 2 :(得分:0)
从您的文件夹中获取图像的路径,如下所示。然后将文件解码为位图。
File file= new File(android.os.Environment.getExternalStorageDirectory(),"Your folder");
Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath())
答案 3 :(得分:0)
如果您有文件路径,只需直接使用BitmapFactory,但要告诉它使用保留alpha的格式:
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap bitmap = BitmapFactory.decodeFile(photoPath, options);
selected_photo.setImageBitmap(bitmap);
答案 4 :(得分:0)
有一个名为
的功能createFromPath(String)
Drawable类中的。 声明
String path="/storage/..<just type in the path>";
Drawable.createFromPath(path);
将返回一个可绘制对象