【问题标题】:setOneShotPreviewCallback() on a Camera object, cropped version of the preview Image相机对象上的 setOneShotPreviewCallback(),预览图像的裁剪版本
【发布时间】:2023-03-31 22:55:01
【问题描述】:

我正在开发一个相当耗时的应用程序,每次按下按钮时我都需要拍摄图像并保存它。按下按钮时,我触发相机对象的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 内的图像数据?

【问题讨论】:

  • 我不明白这部分“按下按钮我触发setOneShotPreviewCallback()”。它是一个回调,你不能触发它。我认为当你实际执行捕获时它不会给你正确的原始图像。可以随时调用回调。请参阅文档here

标签: java android camera bytearray android-camera


【解决方案1】:

尝试设置 PreviewFormat:

parameters.setPreviewFormat(ImageFormat.JPEG);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    • 2012-07-22
    • 2012-01-25
    相关资源
    最近更新 更多