He creado una aplicación que graba y guarda fotos. Tengo una vista previa y una superposición sobre esa vista previa. La superposición define un cuadrado (el área alrededor de la plaza muestra la vista previa de un poco más oscuro), como se puede ver en la imagen:Cámara Android: ¿cómo puedo tomar un "rectángulo" específico de la matriz de bytes?
lo que tengo que hacer es extraer la parte de la imagen donde está el cuadrado La plaza se define así:
Rect frame = new Rect(350,50,450,150);
¿Cómo puedo hacer eso? Tengo la matriz de bytes (datos byte []) que puedo guardar, pero quiero cambiar la aplicación para que solo se guarde el área cuadrada.
Edición: He intentado lo siguiente:
int[] pixels = new int[100000];
ByteArrayOutputStream bos = new ByteArrayOutputStream();
Bitmap bitmap = BitmapFactory.decodeByteArray(data , 0, data.length);
bitmap.getPixels(pixels, 0, 480, 350, 50, 100, 100);
bitmap = Bitmap.createBitmap(pixels, 0, 100, 100, 100, Config.ARGB_4444);
bitmap.compress(CompressFormat.JPEG, 0, bos);
byte[] square = bos.toByteArray();
y luego escribir la matriz "cuadrada" a un nuevo archivo ... El problema es que me sale una imagen hecha de líneas ... hay es un problema con la transformación que hice
solución sencilla epically ... http://stackoverflow.com/a/17733530/294884 – Fattie
@Eyal Por lo que solo quiere recortar el área del rectángulo del byte [] sin guardarlo en el medio? – ashishdhiman2007