gpt4 book ai didi

java - Android预览相机返回不完整的数据数组

转载 作者:行者123 更新时间:2023-12-01 12:40:19 26 4
gpt4 key购买 nike

我正在尝试对 Android 预览相机通过 onPreviewFrame 返回的图像进行一些图像处理。这在尺寸高达 1080 x 720 时工作正常,但我尝试将分辨率提高到 1920 x 1080。结果是我最终得到的数据不完整,并且尝试处理每个像素会出现 ArrayIndexOutOfBounds 异常。

1920 x 1080 图像的数据有 2073600 像素,但无论图像分辨率如何,onPreviewFrame 返回的 data[] 的大小始终为 1382400。

params.setPreviewSize(1920, 1080);

mCamera.setPreviewCallback(new Camera.PreviewCallback() {
public synchronized void onPreviewFrame(byte[] data, Camera camera) {
changeMag = 0;
thisDiff = 0;
diffPixels = 0;
try {
if (currentImage != null) {
lastImage = currentImage;
}
Log.e("CameraTest", "Incoming data array size is only " + data.length);
}

无论我选择什么预览大小,都会记录“传入数据数组大小仅为 1382400”。

考虑到 1920 x 1080 应该是受支持的尺寸,有没有办法通过 onPreviewFrame 取回该数据?

最佳答案

显然,不支持 1920x1080。如果 getSupportedPreviewSizes() 列表确实包含此分辨率,则这将不是第一次设备报告不正确。例如,Galaxy Nexus 声称支持 QVGA (320x240) 预览,但它无法提供此类图像。 setPreviewSize() + setParameters() 继续正确,甚至 getPreviewSize() 报告预期值。但预览回调返回的图像大小与设置此分辨率之前的大小相同。

所以,我希望您确实收到一张 1280x720 的图片,并且对此无能为力。

请注意,在此设备上仍然可以录制 1920x1080 视频:录像机可能使用涉及硬件编码器的特殊机制,并且通常将摄像机数据发送到该编码器,而不将其复制到用户空间。

关于java - Android预览相机返回不完整的数据数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25171229/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com