Camera 对象上的 setOneShotPreviewCallback(),预览图像的裁剪版本

发布于 2024-11-08 06:11:35 字数 546 浏览 0 评论 0原文

我正在开发一个相当需要进程的应用程序,我需要在每次按下按钮时拍摄图像并保存它。按下按钮后,我会触发相机对象的 setOneShotPreviewCallback() 方法,以获取表示当时图像的 byte[] 。在此之后,我使用这个 byte[] 并使用 YUVImage 对象将其转换为位图,这对处理器来说非常繁重。为了减少这种情况,我使用以下方法裁剪图像:

Rect rect = new Rect(4*w/10, 0, 9*w/10, h);
final ByteArrayOutputStream output_stream = new ByteArrayOutputStream();
yuv_image.compressToJpeg(rect, 100, output_stream);

我想知道是否可以仅使用 byte[] 来做到这一点,而不必将其转换为 YUV 图像?就像在触发回调之前一样,创建了 Rect,并且 byte[] 仅填充了该 Rect 内的图像数据?

I am developing a fairly process hungry application which I need to take an image and save it every time a button is pressed. On pressing the button I trigger the setOneShotPreviewCallback() method of the camera object to get a byte[] representing the image at that moment. At the moment after this I take this byte[] and convert that to a bitmap using a YUVImage object which is very heavy on the processor. To reduce this I crop the image using:

Rect rect = new Rect(4*w/10, 0, 9*w/10, h);
final ByteArrayOutputStream output_stream = new ByteArrayOutputStream();
yuv_image.compressToJpeg(rect, 100, output_stream);

I would like to know if I can do this only using the byte[] and not have to convert it to the YUV Image? like before the callback is triggered the Rect is created and the byte[] is only populated with the image data inside that Rect?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

谜泪 2024-11-15 06:11:35

尝试设置 PreviewFormat:

parameters.setPreviewFormat(ImageFormat.JPEG);

Try to set up PreviewFormat:

parameters.setPreviewFormat(ImageFormat.JPEG);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文