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

Android 拍摄照片并应用效果(缩放、旋转、灰色、用手指绘制),android,android-camera2,Android,Android Camera2,我正在尝试拍摄一张照片,之后,允许用户添加一些效果、绘制、将其他资源拖动到图像、添加文本等,如snapchat相机 我一直在关注这个问题。代码的主要部分位于 我已经实现了捕获和预览图像,但是示例将图像设置为TextureView,但是我不知道如何继续操作图像 我不知道是否应该使用TextureView或Canvas或surfaceeview 我想要的最终图像结果示例: 提前感谢。拍摄您的照片,保存您的图像。然后在图像视图中可以使用位图和彩色矩阵应用所需的各种效果。 这里我给一个小样本,使图像

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

我一直在关注这个问题。代码的主要部分位于

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

我不知道是否应该使用
TextureView
Canvas
surfaceeview

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


提前感谢。

拍摄您的照片,保存您的图像。然后在
图像视图中
可以使用
位图
彩色矩阵
应用所需的各种效果。 这里我给一个小样本,使图像灰度

    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;
}
有一个很好的图书馆可以帮助你


用手指画这个问题应该对你有帮助


希望对你有帮助

“允许用户添加一些效果、绘制、将其他资源拖动到图像、添加文本等”——这将是一本好书。堆栈溢出适用于更具体的问题,这些问题可以在一两段时间内得到回答。也许,您可以开始研究
颜色矩阵
的可能性(只需更改一些参数,并使用灰度、负片、深褐色色调等)。而且速度非常快,因为它们处理全局位图颜色,而不是逐像素。谢谢@HrundiV.Bakshi我会调查。“但是StackOverflow也是为了帮助他人,不是为了讽刺”——我不是在讽刺。这将是一本好书,而堆栈溢出是针对更具体的问题,正如您通过阅读可以看出的那样。“谢谢你投反对票”——我没有投你反对票。不,那不是真正的讽刺。只是执行网站规则:只针对特定问题。对于否决票。。。你怎么知道他是落选的选民?我们永远不知道谁会否决一个帖子。据你所知,我也可能是我(我不是)。或者是刚喝了酒就离开了谢谢@g2o我在找这个。