Android的永mucchin |第5页:首页



如何让Android应用的摄像头预览图像


如何得到相机的预览,作为一个Android应用程序的形象?

最后在Android上的相机快门声,是一个延续。

在Android,是一种无()takePicture摄像机图像保存。
我尝试不同的颜色,我可以将其保存为一个图像不知何故,我想介绍,包括恐怖故事。


失败案例1 getDrawingCache()

在Android中,是否有这样一个有用的API来保存屏幕图像快照? 而言,我看着。
然后,我们有以下几种方法。
getDrawingCache()
这是android.view.View类的方法。

首先,如果您尝试使用()getDrawingCache,空返回。
和读取的API参考,因为有解释必须启用缓存,我尝试以下方法之前运行。
setDrawingCacheEnabled(TRUE);

这一点,而不是空,是Bitmap实例,初步现已返回。
要处理的一个实例,但没有保存,是一个黑色的图像文件。
此外,在模拟器,甚至的Xperia。

我曾尝试与错误使用的API作为NDE似乎没有,也不会做,如果比其他相机的预览。
如果你做同样的事情在屏幕上或按钮只显示应用程序的一贯形象已妥善保存。
是推理,和相机的预览,在常人看来,显示缓冲区是不同的,也许,认为这getDrawingCache(),相机的预览图像将无法获得的,这种方法被抛弃了。


作为一个字节数组的情况下通过2 PreviewCallback的失败处理

Android的相机功能,可以配置一个实例执行操作,如预览处理和摄影时,回电。
相机的预览,如果你设置一个回调,它会被称为一个接一个,是PreviewCallback。
具体来说,它是您在下面的方法设置一个回调。
setPreviewCallback(Camera.PreviewCallback CB)
这是android.hardware.Camera类的方法。
在预览的过程中,定期()方法被调用的的类型onPreviewFrame PreviewCallback你在参数设置的一个实例。
由于这种方法的一个参数,来传递一个字节类型的数组,这本来应该在预览图像数据。

然而,此字节数组,它不能被转换为·位图。
例如,如果你通过下面的方法,这个数组,空,则返回将导致。
decodeByteArray(byte []数据,抵消,诠释长度)
会,这是不是一种方法,此方法返回null是android.graphics.BitmapFactory类,它不是一个字节数组格式是正确的。




处理一个字节数组,传递在案件PreviewCallback成功

以前的方法是,它应该做的东西转换成字节数组! 并相信,我研究了更粘一点。
然后,有一个类似的问题问的地方。
你想变成位图字节的数据从相机
的方式,你必须告诉我先生本文saikoro。
OnPreviewFrame PreviewCallback类型的实例(),但只有一个摘录变换方法。 (如果你不知道眼前这个,请尝试浏览来源网站。)


公共无效onPreviewFrame(byte []数据,摄像头摄像头){
最终诠释宽度= getWidth();最终诠释int =的getHeight宽度的高度/ /预览();的高度/ /预览[] RGB = INT [(宽*高);尝试一个像素数组/ / ARGB8888 {
BMP位图= Bitmap.createBitmap(宽度,高度,Bitmap.Config.ARGB_8888); bmp.setPixels的转换/ /(RGB,0宽度; decodeYUV420SP的创建空的位图(RGB,数据,宽,高)/ / ARGB8888 ,0,0,宽,高);设置为一个像素/ /被转换位图

/ /★
}赶上(例外五){
/ /错误}
}

公共静态最后无效decodeYUV420SP([] RGB,字节[] yuv420sp,宽度,高度诠释){
最后帧大小=宽*高;
(J = 0,YP = 0; J <高度; J + +){
UVP =帧大小+(J >> 1)*宽度,U = 0,V = 0;
(I = 0;我<宽度; I + + YP +){
Y =(0xff的&((INT)yuv420sp [YP])) - 16;
(Y <0)Y = 0;
((I&1)== 0){
V =(0xff的yuv420sp [UVP +]) - 128;
U =(0xff的yuv420sp [UVP +]) - 128;
}
INT y1192 = 1192 * Y;
R =(y1192 + 1634 * V);
G =(y1192 - 833 * V - 400 * U);
INT B =(y1192 + 2066 * U);
(R <0),R = 0;否则,如果(R> 262143)R = 262143;
如果(G <0)G = 0;否则,如果(G> 262143)G = 262143;
如果(b <0),B = 0;否则,如果(B> 262143)= 262143;
RGB [YP] =为0xff000000 |((R << 6)及为0xFF0000)|((G >> 2)&0xff00)|((B >> 10)&0xff)的;
}
}
}


然而,在这篇文章中,尽量实际保存图像不钻研。
“★”上面的一部分。
我想下一次,思前想后,我想向大家介绍我自己的方式,这部分的处理,保存样品。
如何保存拍摄的照片与摄像功能的Android应用程序

3 4 5 6 7 ... 10 20 30 ... Last » 八十一5 «首先 ... 四个 5 6 ... 10 20 30 ... 最后»