在相机预览上绘制图像并以JPG格式存储

时间:2015-01-20 14:09:25

标签: java android android-camera android-image textureview

我正在尝试将Bitmap绘制到TextureView中显示的相机预览中。开发者指南告诉我:

  

“重要的是要注意只有一个生产者可以使用TextureView。例如,如果你使用TextureView来显示相机预览,你就不能同时使用lockCanvas()来绘制到TextureView上。” / p>

所以现在我想在FrameLayout中保留相机预览和另一个视图,但是当我尝试拍照时,TextureView完全是黑色的。

以下是一些代码:

View photoFrame = this.findViewById(R.id.fl_photo_frame);
    photoFrame.setDrawingCacheEnabled(true);
    photoFrame.buildDrawingCache();
    Bitmap picture = photoFrame.getDrawingCache();
    photoFrame.destroyDrawingCache();
    try {
        File file = new File(filePath);
        OutputStream outputStream = new FileOutputStream(file);
        picture.compress(Bitmap.CompressFormat.JPEG, 95, outputStream);
        outputStream.flush();
        outputStream.close();
    } catch (FileNotFoundException e) {
        Log.e("Error", "takePhoto: " + e.getMessage());
    } catch (IOException e) {
        Log.e("Error", "takePhoto: " + e.getMessage());
    }

xml的一部分:

<FrameLayout android:id="@+id/fl_photo_frame"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center_horizontal">

            <TextureView
                android:id="@+id/textureView"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_gravity="center_horizontal" />

            <FrameLayout android:id="@+id/fl_overlay_container"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_gravity="center">

                <ImageView android:src="@drawable/icon"
                    android:layout_width="32dp"
                    android:layout_gravity="center"
                    android:layout_height="32dp"/>
            </FrameLayout>
        </FrameLayout>

我稍后会向fl_overlay_container添加更多内容。

我得到的图像是全黑的,图标位于中心

0 个答案:

没有答案