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

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

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

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

спасибо,

5 ответов


я реализовал библиотека обработки изображений Java Джерри. Мне подходит.

скачать AndroidJars.

редактировать

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
//Find the bitmap's 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


вы можете использовать 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();

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

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

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


вы также можете попробовать этой проект он обрабатывает ряд Обработку Растрового

фильтры :-

  • Boost-Up Цвета
  • яркость
  • Глубина Цвета
  • Цветовой Фильтр
  • контраст
  • выбивает
  • флип и вращение
  • гамма
  • гауссово Размытие!--10-->
  • оттенков серого
  • Hue
  • инверсия
  • шум
  • насыщенность
  • сепия
  • резкость
  • эскиз
  • подкраска
  • виньетка

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


Это отличная библиотека, легко интегрируется с 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);