拍摄照片并应用效果(缩放,旋转,灰色,用手指绘制)

时间:2016-02-24 14:32:12

标签: android android-camera2

我正在尝试拍摄照片,之后,允许用户添加一些效果,绘制,拖动其他资源到图像,添加文字等。像Snapchat相机。

我已经关注了Camera 2 API sample。代码的主要部分是 Camera2BasicFragment.java

我已经实现了捕获和预览图像,但是示例将图像设置为TextureView,但我不知道如何继续操作图像。

我不知道我应该使用TextureView还是Canvas还是SurfaceView

我想要的最终图像结果示例:

example

提前致谢。

1 个答案:

答案 0 :(得分:1)

拍摄照片,保存图像。然后在ImageView中,您可以使用BitmapColorMatrix应用所需的所有效果。 在这里,我给出一个小样本来制作图像灰度

    public void toGrayscale() {
        ColorMatrix matrix = new ColorMatrix();
        matrix.setSaturation(0);

        ColorMatrixColorFilter filter = new ColorMatrixColorFilter(matrix);
        imageView.setColorFilter(filter);
    }

应用效果后,只需将drawable保存到图像文件中,如下所示:

public void saveDrawable(ImageView imageView) throws FileNotFoundException {
    Bitmap bitmap = getBitmapFromImageView(imageView);
    OutputStream fOut = null;
    try {
        fOut = new FileOutputStream(absolutePath);
        bitmap.compress(Bitmap.CompressFormat.JPEG, 95, fOut);
    } finally {
        if (fOut != null) {
            try {
                fOut.close();
            } catch (IOException e) {
                //report error
            }
        }

    }
}

@NonNull
private Bitmap getBitmapFromImageView(ImageView imageView) {
    Drawable drawable = imageView.getDrawable();
    Rect bounds = drawable.getBounds();
    Bitmap bitmap = Bitmap.createBitmap(bounds.width(), bounds.height(), Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    drawable.draw(canvas);
    return bitmap;
}

有一个很好的图书馆可以帮助你https://github.com/chrisbanes/PhotoView

用手指画这个问题how to draw line on imageview along with finger in android可以帮助你

希望它的帮助!!