Создание растрового изображения, которое можно нарисовать по пути к файлу
Я пытаюсь создать растровое изображение, которое можно нарисовать по существующему пути к файлу.
String path = intent.getStringExtra("FilePath");BitmapFactory.Options option = new BitmapFactory.Options();option.inPreferredConfig = Bitmap.Config.ARGB_8888;mImg.setImageBitmap(BitmapFactory.decodeFile(path));// mImg.setImageBitmap(BitmapFactory.decodeFile(path, option));// mImg.setImageDrawable(Drawable.createFromPath(path));mImg.setVisibility(View.VISIBLE);mText.setText(path);
Но setImageBitmap(), setImageDrawable() не показывает изображение по пути. Я напечатал path с помощью mText и это выглядит как : /storage/sdcard0/DCIM/100LGDSC/CAM00001.jpg
setImageBitmap()
setImageDrawable()
mText
/storage/sdcard0/DCIM/100LGDSC/CAM00001.jpg
Что я делаю не так? Кто-нибудь может мне помочь?
Переведено автоматически
Ответ 1
Создание растрового изображения по пути к файлу:
File sd = Environment.getExternalStorageDirectory();File image = new File(sd+filePath, imageName);BitmapFactory.Options bmOptions = new BitmapFactory.Options();Bitmap bitmap = BitmapFactory.decodeFile(image.getAbsolutePath(),bmOptions);bitmap = Bitmap.createScaledBitmap(bitmap,parent.getWidth(),parent.getHeight(),true);imageView.setImageBitmap(bitmap);
Если вы хотите масштабировать растровое изображение до высоты и ширины родительского элемента, используйте Bitmap.createScaledBitmap функцию.
Bitmap.createScaledBitmap
Я думаю, вы указываете неправильный путь к файлу.
Ответ 2
У меня это работает:
File imgFile = new File("/sdcard/Images/test_image.jpg");if(imgFile.exists()){ Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath()); //Drawable d = new BitmapDrawable(getResources(), myBitmap); ImageView myImage = (ImageView) findViewById(R.id.imageviewTest); myImage.setImageBitmap(myBitmap);}
Редактировать:
Если указанный выше жестко заданный каталог sdcard в вашем случае не работает, вы можете получить путь к sdcard:
String sdcardPath = Environment.getExternalStorageDirectory().toString();File imgFile = new File(sdcardPath);
Ответ 3
вот решение:
Bitmap bitmap = BitmapFactory.decodeFile(filePath);
Ответ 4
Что ж, использование static Drawable.createFromPath(String pathName) кажется мне немного более простым, чем декодирование его самостоятельно ... :-)
Drawable.createFromPath(String pathName)
Если ваш mImg простой ImageView, вам это даже не нужно, используйте mImg.setImageUri(Uri uri) напрямую.
mImg
ImageView
mImg.setImageUri(Uri uri)