Procesamiento de imágenes en ImageView personalizado y guardar la imagen modificada
Estoy usando un ImageView personalizado. En su onDraw hago un cierto procesamiento usando el lienzo que es como dibujar la línea, bitmaps basados en tacto del usuario.
Para guardar la instantánea resultante cuando el usuario desea guardar la imagen, estamos usando drawingCache
- cómo rotar el mapa de bits en android en el punto central utilizando matriz
- 'Falta el atributo contentDescription en la imagen' en XML
- Android Image Dialog / Popup
- Cómo tener una imagen de fondo de pantalla completa (con centro de cultivo) que no cambia el tamaño
- ImageView no mantiene la altura máxima y el ancho
imageView.setDrawingCacheEnabled(true; Bitmap.createBitmap(imageView.getDrawingCache(), 0, 0, imageView.getHeight(), imageView.getWidth(), matrix, true).compress(CompressFormat.JPEG, 95, new FileOutputStream(file));
Por supuesto que puedo usar esto para obtener la imagen real mientras el usuario pulsa guardar, pero la imagen no contiene ningún procesamiento realizado en el imageView.
Bitmap bmp = ((BitmapDrawable)imageView.getDrawable()).getBitmap(); Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), matrix, true).compress(CompressFormat.JPEG, 95, new FileOutputStream(file));
Problema: El tamaño de la imagen guardada es el tamaño de la imagenVista que es de pantalla completa pero depende del dispositivo. Para los teléfonos de tamaño más pequeño de la pantalla se reduce a 240 X 320.
Pregunta:
a. ¿Es posible obtener una imagen de tamaño decente independientemente del tamaño de la pantalla del dispositivo?
segundo. ¿Es posible realizar el procesamiento de imágenes directamente en la imagen que se está utilizando en el Custom ImageView?
¡Gracias de antemano!
¿Alguna idea?
- Animación paralela en Imageview
- ¿Cómo anular los elementos definidos en un proyecto de biblioteca de Android?
- ImageView carga la imagen de alta resolución como muy mala calidad
- TranslateAnimación en un ImageView no funciona
- Cómo configurar un efecto ripple en textview o imageview en Android?
- Android alinea la imagen en la parte superior y central en RelativeLayout
- ¿Cómo preparo imágenes para todas las resoluciones de Android?
- Cambiar la fuente de ImageView
Tal vez una alternativa sería utilizar la clase Canvas para hacer algunos de su dibujo y visualización de la imagen: javadoc: android.graphics.Canvas .
La clase ImageView no es la mejor cuando las imágenes necesitan "refrescarse" con frecuencia.
Si decide seguir con ImageView, no cree el mapa de bits utilizando las dimensiones de ImageView. Conserve la relación de aspecto de la imagen y compute su mapa de bits de acuerdo con las grandes dimensiones que necesita. El imageView lo reducirá (si es necesario) para ajustarlo a la pantalla.
Puedes usar
Bitmap.createScaledBitmap(Bitmap b, int newWidth, int newHieght, boolean filter);
y para obtener un mapa de bits de uso de recursos
Bitmap image = BitmapFactory.decodeResource(..)
entonces usted puede usar
ImageView.setImageBitmap(Bitmap bm)
para establecer el nuevo mapa de bits a la vista de imagen
- Crash al analizar el mensaje protobuf que contiene una cadena utilizando C ++ y Android NDK
- Tratando de enviar un archivo de texto creado como un archivo adjunto de correo electrónico – desde una carpeta predeterminada