- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在实现以下方法,但 Logcat 警告:“AndroidMediaUtils:Image_getJpegSize:未检测到 JPEG header ,默认为 size=width=6000000”`
private ImageReader.OnImageAvailableListener mOnImageAvailableListener =
new ImageReader.OnImageAvailableListener() {
@Override
public void onImageAvailable(ImageReader reader) {
Image image = reader.acquireLatestImage();
// get image bytes
ByteBuffer imageBuf = image.getPlanes()[0].getBuffer();
final byte[] imageBytes = new byte[imageBuf.remaining()];
imageBuf.get(imageBytes);
image.close();
onPictureTaken(imageBytes);
}
};
我该如何解决?如果你能帮助我,我将不胜感激。谢谢
最佳答案
我不确定您尝试在什么硬件上运行此代码,但我自己的项目涉及 Raspberry Pi 3 和 Android Things。
我在 Google IoT 社区中就此提出了几个问题 https://plus.google.com/communities/107507328426910012281但没有得到关于这个特定问题的任何回应。
我花了几个小时试图解决这个问题,并得出结论,如果您以 JPEG 格式捕获图像,您实际上无法对警告采取任何措施。
这意味着您将处理一个 6MB 的字节数组,这可能是不必要的。您可以在带有相机 v2 模块和 Android Things 的 Raspberry Pi 3 上捕获的最大分辨率是 640x480,这实际上不应该创建 6MB 大阵列。
然而,我可以做的是通过从原始缓冲区创建一个位图来对此进行后期处理并输出大小不超过 6MB 的内容,这似乎能够很好地整理出最终结果。这绝不是优化代码,因为我刚刚找到了针对我的特定问题的解决方案,并想与您分享:
Image image = reader.acquireLatestImage();
ByteBuffer imageBuf = image.getPlanes()[0].getBuffer();
final byte[] imageBytes = new byte[imageBuf.remaining()];
imageBuf.get(imageBytes);
final Bitmap bmp = BitmapFactory.decodeByteArray(imageBytes,0,imageBytes.length);
int bytes = bmp.getByteCount();
ByteBuffer buffer = ByteBuffer.allocate(bytes); //Create a new buffer
bmp.copyPixelsToBuffer(buffer); //Move the byte data to the buffer
FileOutputStream outStream = null;
File file = new File(getExternalFilesDir(null), "mypic.jpg");
try {
// Write to SD Card
outStream = new FileOutputStream(file);
bmp.compress(Bitmap.CompressFormat.JPEG, 100, outStream);
outStream.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
image.close();
}
已创建错误报告,可在此处关注/阅读:https://issuetracker.google.com/issues/62018053
关于Android - AndroidMediaUtils : Image_getJpegSize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43028624/
我正在实现以下方法,但 Logcat 警告:“AndroidMediaUtils:Image_getJpegSize:未检测到 JPEG header ,默认为 size=width=6000000”
我是一名优秀的程序员,十分优秀!