2010年6月9日水曜日

カメラのプレビュー画像をいじってみる(2)

数日前にやっていたカメラのプレビュー画像操作。実機で色々試したあげく、以下のコードに落ち着きました。他にやりようあるかしら。

private class PreviewDraw implements Runnable {
    private byte[] _data;

    @Override
    public void run() {
        bitmap = BitmapUtil.yuv2rgb(_data, _previewSize.width, _previewSize.height, _rgbBuffer);

        // 描画
        if (bitmap != null) {
            Canvas canv = holder.lockCanvas();
            if (canv != null) {
                canv.drawBitmap(bitmap, 0, 0, null);
                holder.unlockCanvasAndPost(canv);
            }
        }
    }

    public void setData(byte[] data) {
        _data = data;
    }
}

private final Camera.PreviewCallback previewCallback =
    new Camera.PreviewCallback() {
        public void onPreviewFrame(byte[] data, Camera camera) {
            _previewDraw = new PreviewDraw();
            _previewDraw.setData(data);
            Thread thread = new Thread(_previewDraw);
            thread.start();
        }
    };

YUV420からRGBの変換で1.2秒くらい時間がかかってます。はっきり言って現実的ではないです。
モノクロ画像の表示(Y成分だけ抜き出す)でも0.3秒くらいかかります。うーん。

0 件のコメント:

コメントを投稿