versiones pie oreo developer descargar android

oreo - android pie



Android obtener Orientación de una cámara Bitmap? Y gire hacia atrás-90 grados (2)

La última respuesta fue técnicamente perfecta, pero traté de crear un sistema para administrar imágenes, rotar, cambiar el tamaño, almacenar en caché y cargar en ImageViews y puedo decir que es un infierno. Incluso cuando todo estaba hecho, los bloqueos a veces causan OutOfMemory en algunos dispositivos.

Mi punto es que no reinventar la rueda, tiene un diseño perfecto. Google mismo lo alienta a usar Glide . Funciona en una sola línea, súper fácil de usar, liviano en tamaño y número de funciones, administra EXIF ​​de forma predeterminada , y usa la memoria como un amuleto. Simplemente está codificado con magia negra;)

No estoy seguro si Picasso también administra EXIF, pero hay una introducción rápida para ambos:

https://inthecheesefactory.com/blog/get-to-know-glide-recommended-by-google/en

Mi consejo: no pierdas tu tiempo y úsalas. Puedes resolver tu problema en una línea:

Glide.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);

Tengo este código:

//choosed a picture public void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { if (requestCode == ImageHelper.SELECT_PICTURE) { String picture = ""; Uri selectedImageUri = data.getData(); //OI FILE Manager String filemanagerstring = selectedImageUri.getPath(); //MEDIA GALLERY String selectedImagePath = ImageHelper.getPath(mycontext, selectedImageUri); picture=(selectedImagePath!=null)?selectedImagePath:filemanagerstring;

...

esto es solo un selector de imágenes, de la galería. esto es agradable, pero cuando abrí esta imagen en una vista de imagen, las imágenes cuando se tomaron "MODO RETRATO" con la cámara se ven bien, pero las imágenes tomaron "MODO LLANTA" con la cámara, abriéndose a -90 grados.

¿Cómo puedo girar esas imágenes?

Bitmap output = Bitmap.createBitmap(newwidth, newheight, Config.ARGB_8888); Canvas canvas = new Canvas(output);

intenté esto:

Log.e("w h", bitmap.getWidth()+" "+bitmap.getHeight()); if (bitmap.getWidth()<bitmap.getHeight()) canvas.rotate(-90);

pero esto no funciona, todo el tamaño de la imagen es: * 2560 1920 píxeles (RETRATO, y modo LANDSCAPE todo)

¿Qué puedo hacer para girar hacia atrás las imágenes de PAISAJISMO?

gracias Leslie


Si se toma una fotografía con una cámara digital o un teléfono inteligente, la rotación a menudo se almacena en los datos Exif la foto, como parte del archivo de imagen. Puede leer los metadatos Exif de una imagen usando el ExifInterface Android.

Primero, crea ExifInterface :

ExifInterface exif = new ExifInterface(uri.getPath());

Luego, busca la rotación actual:

int rotation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);

Convertir la rotación exif a grados:

int rotationInDegrees = exifToDegrees(rotation);

dónde

private static int exifToDegrees(int exifOrientation) { if (exifOrientation == ExifInterface.ORIENTATION_ROTATE_90) { return 90; } else if (exifOrientation == ExifInterface.ORIENTATION_ROTATE_180) { return 180; } else if (exifOrientation == ExifInterface.ORIENTATION_ROTATE_270) { return 270; } return 0; }

Luego use la rotación real de la imagen como punto de referencia para rotar la imagen usando una Matrix .

Matrix matrix = new Matrix(); if (rotation != 0f) {matrix.preRotate(rotationInDegrees);}

Crea la nueva imagen girada con el método Bitmap.createBitmap que toma una Matrix como parámetro:

Bitmap.createBitmap(Bitmap source, int x, int y, int width, int height, Matrix m, boolean filter)

donde Matrix m tiene la nueva rotación:

Bitmap adjustedBitmap = Bitmap.createBitmap(sourceBitmap, 0, 0, width, height, matrix, true);

Vea estos tutoriales para ejemplos de códigos fuente útiles: