web-dev-qa-db-fra.com

Comment appliquer différents effets d'image (filtres) sur des images bitmap telles que sépia, noir et blanc, flou, etc.?

Je ne sais pas comment appliquer un effet différent sur l'image,

J'ai vu le EffectFactory class et Effect class dans la classe d'effet il y a une méthode apply mais je ne suis pas sûr de ce qu'il faut transmettre dans inputTexId et optputTexId, et depuis où j'obtiens la nouvelle image mise à jour, comment stocker l'image mise à jour dans imageView,

S'il vous plaît aidez-moi avec la façon d'aborder ce problème. Existe-t-il une bibliothèque opensource disponible pour fournir des effets sur Image.

Merci,

11
Nixit Patel

J'ai implémentéLa bibliothèque de traitement d'images Java de Jerry. Fonctionne bien pour moi. 

TéléchargerAndroidJars.

Modifier

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);

Trouvez des informations plus détaillées surAndroid-jhlabs

9
Chintan Rathod

Vous pouvez utiliser 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();
6
Diego Catalano

Oui, vous pouvez utiliser de nombreux effets avec aviary sdk ..

Visitez http://www.aviary.com/Android

Pour des effets plus avancés, vous pouvez utiliser Opencv .. Ce sont les meilleurs ..

5
Sujith

Vous pouvez également essayer this project qui gère un certain nombre de Bitmap Processing

Filtres: -

  • Boost-Up Colors
  • Luminosité
  • La profondeur de la couleur
  • Filtre de couleur
  • Contraste
  • Gaufrer
  • Flip et Rotation
  • Gamma
  • Flou gaussien
  • Niveaux de gris
  • Teinte
  • Inverser
  • Bruit
  • Saturation
  • Sépia
  • Aiguiser
  • Esquisser
  • Teinte
  • Vignette

Étant donné qu’il est en Java et qu’il traite les étiquettes de pixels, il n’est pas aussi rapide que la plupart des bibliothèques basées sur C++, mais il fonctionne très bien si la taille des images n’est pas très grande, par exemple les vignettes.

2
Hitesh Sahu

C'est une excellente bibliothèque, facile à intégrer à gradle, rapide , Efficace et qui m'a sauvé la journée:

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

voici un exemple d'utilisation:

 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);
1
Gal Rom