Как применять различные эффекты изображения (фильтры) на растровых изображениях как сепия, черно-белое, размытие и т.д.?

Я не имею никакого представления о том, как применять различные эффекты для Image,

Я видел класс EffectFactory и Effect класс в классе есть один метод apply но я не уверен, что передать в inputTexId и optputTexId, и откуда я получу новый обновленный образ, как сохранить обновленное изображение в imageView,

Пожалуйста, помогите мне в том, как подойти к этой проблеме. Существует ли библиотека открытых ресурсов для предоставления эффектов для изображения.

Спасибо,

Ответ 1

Я реализовал Jerry Java Image Processing Library. Прекрасно работает для меня.

Загрузите AndroidJars.

Edit

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
//Find the bitmap width height
int width = AndroidUtils.getBitmapOfWidth(getResources(), R.drawable.ic_launcher);
int height = AndroidUtils.getBitmapOfHeight(getResources(), R.drawable.ic_launcher);
//Create a filter object.
GaussianFilter filter = new GaussianFilter();
//set???? function to specify the various settings.
filter.setRadius(8.5f);
//Change int Array into a bitmap
int[] src = AndroidUtils.bitmapToIntArray(bitmap);
//Applies a filter.
filter.filter(src, width, height);
//Change the Bitmap int Array (Supports only ARGB_8888)
Bitmap dstBitmap = Bitmap.createBitmap(src, width, height, Config.ARGB_8888);

Найти более подробную информацию на Android-jhlabs

Ответ 2

Вы можете использовать Catalano Framework:

http://code.google.com/p/catalano-framework/

FastBitmap image = new FastBitmap(bitmap);
image.toRGB();

//Sepia
Sepia sepia = new Sepia();
sepia.applyInPlace(image);

//Blur
Blur blur = new Blur();
blur.applyInPlace(image);

//Emboss
Emboss emboss = new Emboss();
emboss.applyInPlace(image);

//Retrieve bitmap
bitmap = fb.toBitmap();

Ответ 3

Да, вы можете использовать множество эффектов с помощью aviary sdk..

Посетите http://www.aviary.com/android

Для более продвинутых эффектов вы можете использовать Opencv.. Это лучшие..

Ответ 4

Вы также можете попробовать этот проект обрабатывать несколько Bitmap Processing

Фильтры: -

  • Цвета повышения яркости
  • Brightness
  • Глубина цвета
  • Цветовой фильтр
  • Контраст
  • Emboss
  • Флип и вращение
  • Gamma
  • Размытие по Гауссу
  • Grayscale
  • Hue
  • Invert
  • Шум
  • Насыщенность
  • Сепия
  • Sharpen
  • Sketch
  • Оттенок
  • Виньетка

Так как он написан на Java и обрабатывает пиксельные метки, он не так быстро, как большая часть библиотеки на С++, но он отлично работает, если размер растрового изображения не очень большой, например, миниатюры.

Ответ 5

Это отличная библиотека, легко интегрируемая с gradle, она быстро и эффективно и сберегли мой день:

https://github.com/wasabeef/picasso-transformations

это пример использования:

 Transformation trans1 = new ContrastFilterTransformation(getActivity(), 1.5f);
                        Transformation trans2 = new BrightnessFilterTransformation(getActivity(), 0.2f);
                        Picasso.with(getActivity()).load(uri)
                                .transform(trans1).transform(trans2).into(imageview3);