Cómo cambiar el tamaño de una imagen a la imagen de alta resolución sin perder píxeles?

Estoy trabajando en algunas tareas de procesamiento de imágenes.

He hecho la resolución baja Bitmap usando getDrawingCache() y createScalledBitmap()

Pero cuando vuelvo a clasificar según el tamaño esta imagen a la alta resolución diga 612 X 612 mi imagen está consiguiendo enmascarada. Y se ve tan mal.

¿Hay alguna manera de cambiar el tamaño de las imágenes a altas resoluciones sin perder píxeles? ¿OpenCV tiene este tipo de clases?

No puedes. Si su imagen es 200×200, entonces es cuántos píxeles de información que contiene. Si aumenta la escala, sigue siendo la misma cantidad de información que usted tiene que esparcir en un área más amplia.

Piense en ello de esta manera – digamos que tiene una imagen que es un píxel y que el píxel es azul. Ahora desea escalar esa imagen hasta dos píxeles. ¿De qué color debe ser el segundo píxel? Respuesta: puede ser cualquier cosa. No hay información en el primer píxel que puede decidir con autoridad qué debe ser el segundo píxel, no hay información disponible.

Por lo tanto, no es una cuestión de "perder los píxeles", como lo pones, es una cuestión de añadir nuevos píxeles sin información sobre lo que debe verse. Así que el cambio de tamaño utiliza la información que tiene, que básicamente dice "hacer píxeles insertados / nuevos de igual color que el píxel preexistente más cercano".

Hay algoritmos y técnicas para la interpolación (adivinando) lo que los píxeles insertados deben tener el aspecto de evitar bordes dentados y tal. Wikipedia tiene una buena información sobre varias técnicas de escalado basadas en la interpolación y sobremuestreo como punto de partida. Tenga en cuenta que ninguna de estas técnicas crea nueva información, solo suavizan los bordes y hacen que la imagen escalada parezca menos dentada.

Lo que debe hacer es crear una imagen original de tamaño 612 X 612 y luego reducir el tamaño y guardarlo como algo más para que tenga una imagen grande original y una imagen pequeña. Su fácil de ir de la imagen grande a la pequeña del tamaño que va de pequeño a grande.

He resuelto esto usando los activos ..

(1) Poner todas mis imágenes en la carpeta de activos

(2) Lea las imágenes usando inputstream

ahora i dont necesidad de cambiar su tamaño y funciona bien como yo quiero. Me gusta esto:

 private void setThemeBackgroundImage(String imageName, Button themeButton) { try { InputStream backgroundBitmap = getAssets().open(imageName); Bitmap immutableBitmap = BitmapFactory .decodeStream(backgroundBitmap); themeButton.setBackgroundDrawable(new BitmapDrawable( getResources(), immutableBitmap)); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } 
  • Uso de ImageMagick en mi aplicación Android
  • Hacer que la imagen superpuesta sea transparente al tocar en Android?
  • Error: No se puede obtener un lockedBuffer, el cliente muy probable intenta bloquear más de buffers maxImages
  • Filtro esférico en android
  • Android Yuv420sp a ARGB en OpenCV
  • Cortar la imagen después de seleccionar el área mediante la detección de bordes en android
  • Viñeta en Android
  • Cómo configurar la imagen de salida use com.android.camera.action.CROP
  • Dilatación y erosión en Android
  • Calcular la relación de aspecto de la imagen de destino Transformar perspectiva
  • Transmisión de cámara en vivo en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.