在Android上的摄像头中绑定保存的图像

在Android上的摄像头中绑定保存的图像,android,image,camera,Android,Image,Camera,因此,我在Android上实现了自己版本的摄像头应用程序。除了我有一个使用MyTouch 4G的用户,他的图像变得斑纹和混乱之外,一切似乎都很好: 你知道是什么导致了这一切吗?以前有人见过这个吗 另外:使用其他设备的用户可以很好地显示他们的图片 编辑:我现在可以在设备上看到这种情况。拍照时,大约一半屏幕呈绿色闪烁。然后,图片如上图所示。我尝试了许多不同的方法来保存字节[]。看来我得到的数据真的被破坏了。我正在使用jpeg onPictureTaken回调,只是保存了那个字节[]。一次又一次。我

因此,我在Android上实现了自己版本的摄像头应用程序。除了我有一个使用MyTouch 4G的用户,他的图像变得斑纹和混乱之外,一切似乎都很好:

你知道是什么导致了这一切吗?以前有人见过这个吗

另外:使用其他设备的用户可以很好地显示他们的图片


编辑:我现在可以在设备上看到这种情况。拍照时,大约一半屏幕呈绿色闪烁。然后,图片如上图所示。我尝试了许多不同的方法来保存字节[]。看来我得到的数据真的被破坏了。我正在使用jpeg onPictureTaken回调,只是保存了那个字节[]。一次又一次。我只能在一些MyTouch4G设备上看到这一点。我在这里真是不知所措。有什么帮助吗?

我说您正在复制数据,每行末尾可能缺少一些像素。也许您的计算中的宽度有误?

我在使用HTC Thunderbolt时看到了一个非常类似的问题。我将PictureCallback.onPictureTaken()中的图像数据字节[]直接保存到SD卡。当我查看SD卡上的图像时,它显示了相同的带状效果

然后我意识到我正在设置相机参数中的previewSize。我使用的代码是:

// Ensure that the camera resolution is a multiple of 8, as the screen may not be.
// TODO: A better solution would be to request the supported preview resolutions
// and pick the best match, but this parameter is not standardized in Cupcake.
Point cameraResolution = new Point();
cameraResolution.x = ( screenResolution.x >> 3 ) << 3;
cameraResolution.y = ( screenResolution.y >> 3 ) << 3;
parameters.setPreviewSize( cameraResolution.x, cameraResolution.y );
//确保相机分辨率为8的倍数,因为屏幕可能不是。
//TODO:更好的解决方案是请求支持的预览分辨率
//并选择最佳匹配,但此参数在纸杯蛋糕中未标准化。
点相机分辨率=新点();

cameraResolution.x=(screensolution.x>>3)>3)或者MyTouch4G报告的宽度不正确。。。也许你可以调整宽度?我不处理宽度。我只是从相机的onPictureTaken回调中获取数据。我刚刚意识到,虽然我将图片保存为.png(在我的手机上可以正常工作),但普通的摄像头应用程序将它们保存为.jpg。我已将新版本发送给我的测试人员。如果这解决了问题,我一定会发布我的解决方案!在我看来,宽度肯定不正确。。您是否正在设置摄像机参数?有时在内存不足的情况下,图像会被二次采样,从而导致宽度变化。@siliconeagle是的,我正在设置相机参数。我有一个方法可以查看支持的大小并相应地设置大小。就像我说的,它在我试过的其他4部手机上都很好用。只是不是在MyTouch4G上。只是为了记录在案,我并不是说这是你的bug——可能也是电话bug;)(我似乎有很多奇怪的事情发生在特定的手机上)我会调查一下。基本上我已经放弃了,只是说我的应用程序不支持MyTouch4G。哈哈。我根据最接近的支持大小设置预览大小,如代码上面的注释所示。我真的不知道我怎么能不设置预览大小,我很确定这会导致很多手机崩溃,是吗?