2016-02-24 1 views
1

Я пытаюсь захватить фотографию и после этого разрешить пользователю добавлять эффекты, рисовать, перетаскивать другие объекты на изображение, добавлять текст , и т. д. Как snapchat камера.Захват фотографий и применение эффектов (масштаб, поворот, серый, рисование пальцем)

Я следил за Camera 2 API sample. Большая часть кода находится в Camera2BasicFragment.java

Я достиг захвата и предварительного просмотра изображения, но пример установки изображения в TextureView, но я не знаю, как продолжать манипулировать изображением.

Я не знаю, следует ли использовать TextureView или Canvas или SurfaceView.

Пример конечного результата изображения, что я хочу:

example

Спасибо заранее.

+1

«Разрешить пользователю добавлять некоторые эффекты, рисовать, перетаскивать другие объекты на изображение, добавлять текст и т. Д.» - Это сделало бы хорошую книгу. Переполнение стека - это более конкретные вопросы, на которые можно ответить в параграфе или два. – CommonsWare

+0

Возможно, вы могли бы начать исследование возможностей ColorMatrices (просто измените некоторые параметры и получите GreyScale, Negative, Sepia Toning, ...). И ** очень быстро **, поскольку они работают с глобальными цветами растрового изображения, а не пикселями по пикселям. –

+1

Спасибо @ HrundiV.Bakshi Я буду исследовать. – AndroidRuntimeException

ответ

1

Захват вашей фотографии, сохраните изображение. Затем в ImageView вы можете применять все виды эффектов, которые вы хотите использовать Bitmap и ColorMatrix. Привожу небольшой образец, чтобы сделать изображение в оттенках серого

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

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

После применения эффектов просто сохранить вытяжку в файл изображения, как это:

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 должен помочь вам

Надеюсь, что это поможет!

+0

Спасибо @ g2o Я искал это. – AndroidRuntimeException

+0

Я рад помочь;) –

Смежные вопросы