una studio ruta obtener imagen galeria desde cargar camara android android-drawable bitmapfactory

studio - imageview android



Crear un mapa de bits/Drawable desde la ruta del archivo (6)

Estoy tratando de crear un mapa de bits o dibujable desde la ruta del archivo existente.

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);

Pero setImageBitmap() , setImageDrawable() no muestra una imagen de la ruta. /storage/sdcard0/DCIM/100LGDSC/CAM00001.jpg ruta con mText y se ve así: /storage/sdcard0/DCIM/100LGDSC/CAM00001.jpg

¿Qué estoy haciendo mal? ¿Alguien puede ayudarme?


Bueno, usar el estático Drawable.createFromPath(String pathName) parece un poco más directo que decodificarlo usted mismo ... :-)

Si su mImg es un simple ImageView , ni siquiera lo necesita, use mImg.setImageUri(Uri uri) directamente.


Crear mapa de bits desde la ruta del archivo:

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);

Si desea escalar el mapa de bits a la altura y el ancho de los padres, utilice la función Bitmap.createScaledBitmap .

Creo que estás dando la ruta de archivo incorrecta. :) Espero que esto ayude.


Esto funciona para mi:

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); }

Editar:

Si el directorio anterior de sdcard codificado no funciona en su caso, puede recuperar la ruta de la tarjeta sd:

String sdcardPath = Environment.getExternalStorageDirectory().toString(); File imgFile = new File(sdcardPath);


aquí hay una solución:

Bitmap bitmap = BitmapFactory.decodeFile(filePath);


no puede acceder a sus derivables a través de una ruta, por lo tanto, si desea una interfaz legible para los humanos con sus herramientas que pueda compilar programáticamente.

declare un HashMap en algún lugar de su clase:

private static HashMap<String, Integer> images = null; //Then initialize it in your constructor: public myClass() { if (images == null) { images = new HashMap<String, Integer>(); images.put("Human1Arm", R.drawable.human_one_arm); // for all your images - don''t worry, this is really fast and will only happen once } }

Ahora para acceder -

String drawable = "wrench"; // fill in this value however you want, but in the end you want Human1Arm etc // access is fast and easy: Bitmap wrench = BitmapFactory.decodeResource(getResources(), images.get(drawable)); canvas.drawColor(Color .BLACK); Log.d("OLOLOLO",Integer.toString(wrench.getHeight())); canvas.drawBitmap(wrench, left, top, null);


static ArrayList< Drawable> d; d = new ArrayList<Drawable>(); for(int i=0;i<MainActivity.FilePathStrings1.size();i++) { myDrawable = Drawable.createFromPath(MainActivity.FilePathStrings1.get(i)); d.add(myDrawable); }