¿Cómo obtener la imagen de vista previa de la cámara de aplicaciones para Android
¿Cómo obtener una vista previa de la cámara como una imagen de la aplicación Android?
La última del sonido obturador de la cámara sobre Android es una continuación de.
En Android, es una manera de ahorrar sin la takePicture (), la imagen de la cámara.
Trato de diferentes colores, yo era capaz de guardar como una imagen de alguna manera, y quiero presentarme, incluyendo historias de terror.
Los casos de fallos 1 getDrawingCache ()
En Android, si es que existe una API útil para ser guardado como una instantánea de la imagen de la pantalla? En términos de, que me veía.
Luego, tenemos los siguientes métodos.
getDrawingCache ()
Este es el método de la clase android.view.View.
En primer lugar, si se intenta utilizar el () getDrawingCache, nula fue devuelto.
Y leer la referencia de la API, porque no había una explicación debe habilitar la memoria caché, traté de correr justo antes de los métodos siguientes.
setDrawingCacheEnabled (true);
Esto, más que nulo, es una instancia de Bitmap tentativamente se ha regresado.
Para hacer frente a una instancia de ella, pero no se ha guardado, era un archivo de imagen en negro.
También en el emulador, aunque Xperia.
He intentado con el uso equivocado de la API como Nde no parece, no lo haría si no es la vista previa de la cámara.
Si usted hace lo mismo en la pantalla o el botón para mostrar sólo la imagen habitual de la solicitud ha sido correctamente almacenados.
Es la inferencia, y una vista previa de la cámara, en la vista de lo común, el búfer de pantalla es algo diferente o, tal vez, que este getDrawingCache (), la imagen de vista previa de la cámara no se obtendría, este método fue abandonado.
El procesamiento como un conjunto de bytes que se pasa en el caso 2 el fracaso PreviewCallback
La funcionalidad de Android de la cámara, puede configurar una instancia al realizar operaciones tales como el procesamiento y la fotografía de la vista previa, para volver a llamar.
Una vista previa de la cámara, si se establece una devolución de llamada, se le volvió a llamar uno por uno, es PreviewCallback.
En concreto, se trata de una devolución de llamada que se establece en el siguiente método.
setPreviewCallback (Camera.PreviewCallback ter)
Este es el método de la clase android.hardware.Camera.
En el método del proceso de vista preliminar, sobre una base regular, () se llama una instancia de tipo de PreviewCallback onPreviewFrame que se establece en el argumento.
Como argumento de este método, que está por venir se pasa una matriz de tipo byte, esto debería haber sido en los datos de previsualización de la imagen.
Sin embargo, esta matriz de bytes, y no se puede convertir en un mapa de bits como ·.
Por ejemplo, si pasa los siguientes métodos, esta matriz, se devuelve null hará.
decodeByteArray (byte [] datos, int desplazamiento, int longitud)
Habrá Esto no es un método de clase android.graphics.BitmapFactory, que nulo es devuelto por este método, no es un formato de matriz de bytes es correcta.
El procesamiento de una matriz de bytes que se pasa en el caso de éxito PreviewCallback
El método anterior es decir, debe ir a hacer para convertir la matriz de bytes a algo! Y creer, he examinado un poco más pegajosa.
Entonces, había un lugar donde las preguntas similares se les pide.
Usted quiere que se convirtió en un byte de datos de mapa de bits de la cámara
Tienes que decirme de una manera que el Sr. saikoro de este artículo.
OnPreviewFrame PreviewCallback tipo de instancia (), pero sólo un extracto método de transformación. (Si usted no sabe exactamente esto, por favor, intenta explorar el sitio de origen.)
public void onPreviewFrame (byte [] datos, la cámara de la cámara) {
final int width = getWidth (); final int height = ancho de getHeight de / / vista previa (); int altura / / Preview [] rgb = new int [(ancho * alto)]; tratar una matriz de píxeles de la / / ARGB8888 {
Bitmap bmp = Bitmap.createBitmap (anchura, altura, Bitmap.Config.ARGB_8888), conversión de bmp.setPixels / / (RGB, 0, ancho; decodeYUV420SP la creación de mapa de bits vacío (RGB, los datos, ancho, alto) es / / ARGB8888 , 0, 0, ancho, alto); establece en un mapa de bits de píxeles / / se convirtió
/ / ★
} Catch (Exception e) {
/ / Error}
}
pública decodeYUV420SP void final (int [] rgb, byte [] yuv420sp, int ancho, int altura) {
final int framesize = base * altura;
for (int j = 0, yp = 0; j <altura; j + +) {
int UVP = framesize + (j >> 1) * ancho, u = 0, v = 0;
for (int i = 0; i <anchura; i + +, yp + +) {
int y = (0xff y ((int) yuv420sp [yp])) - 16;
if (y <0) y = 0;
if ((i + 1) == 0) {
v = (0xff y yuv420sp [UVP + +]) - 128;
u = (0xff y yuv420sp [UVP + +]) - 128;
}
int = 1192 y1192 * y;
int r = (+ 1634 y1192 * v);
int g = (y1192 - 833 * V - 400 * U);
int b = (+ 2066 y1192 * u);
if (r <0) r = 0; else if (r> 262143) r = 262143;
if (g <0) g = 0; else if (g> 262143) g = 262143;
if (b <0) b = 0; else if (b> 262143) b = 262143;
rgb [yp] = 0xFF000000 | ((r << 6) y 0xFF0000) | ((g >> 2) y 0xff00) | ((b >> 10) & 0xff);
}
}
}
Sin embargo, en este artículo, por lo que en realidad para guardar las imágenes no se están profundizando.
Es parte de la "★" por encima.
Creo que la próxima vez, y después de pensarlo me gustaría presentarles a mi manera, salvar a una muestra de la transformación de esta parte.
⇒ ¿Cómo guardar las fotografías tomadas con la función de cámara de la aplicación para Android











