2017-07-07 2 views
0

Wie kann ich die schwarze Farbe durch transparente Farbe (oder eine andere Farbe) in einem ImageView ersetzen?Machen Sie ImageView schwarze Teile des Bildes als andere Farbe

Ich lade Bild von Web mit Picasso:

Picasso.with(getContext()).load("www.abc.com/a.png").into(myImageView); 

Derzeit sieht es wie folgt aus:

enter image description here

Das Bild selbst enthält den schwarzen Hintergrund, die ich entfernen möchten. Ich habe versucht mit myImageView.setColorFilter(Color.BLACK);, aber es scheint nicht zu funktionieren.

+0

@ Primož 'c0dehunter' Kralj siehe meine Antwort hoffen, dass diese Ihnen helfen wird. –

+0

@ akhilesh0707 https://freesound.org/data/displays/186/186942_2594536_wave_M.png –

+0

Richtig; Ich möchte den schwarzen Teil durch eine andere Farbe ersetzen oder in diesen Bereichen transparent machen. –

Antwort

-1

Andy Developer's answer geholfen, aber ich hatte manuell schwarze Pixel zu Pixel meinen Geschmack zu konvertieren. Es funktioniert, obwohl ich mir nicht sicher bin, ob das der beste Weg ist.

enter image description here

Picasso.with(getContext()).load(IMAGE_URL).into(new Target() { 
    @Override 
    public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) 
    { 
     Bitmap copy = bitmap.copy(bitmap.getConfig(),true); 

     int [] allpixels = new int [copy.getHeight()*copy.getWidth()]; 
     copy.getPixels(allpixels, 0, copy.getWidth(), 0, 0, copy.getWidth(), copy.getHeight()); 

     int replacementColor = Color.parseColor("#34495E"); 
     for(int i = 0; i < allpixels.length; i++) { 
      if(allpixels[i] == Color.BLACK) 
       allpixels[i] = replacementColor; 
     } 

     copy.setPixels(allpixels, 0, copy.getWidth(), 0, 0, copy.getWidth(), copy.getHeight()); 

     myImageView.setImageBitmap(copy); 
    } 

    @Override 
    public void onBitmapFailed(Drawable errorDrawable) { } 

    @Override 
    public void onPrepareLoad(Drawable placeHolderDrawable) { } 
}); 
1

Sie können dies versuchen.

Picasso.with(this).load("Your URL").into(new Target() { 
     @Override 
     public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) 
     { 
      bitmap.eraseColor(Color.argb(AAA,RRR,GGG,BBB)); 
      OR 
      bitmap.eraseColor(getResources().getColor(R.color.myColor)); 
      imageView.setBackground(new BitmapDrawable(bitmap)); 
     } 

     @Override 
     public void onBitmapFailed(Drawable errorDrawable) { 

     } 

     @Override 
     public void onPrepareLoad(Drawable placeHolderDrawable) { 

     } 
    }); 
+0

Ich fürchte, das wird nicht die schwarze Farbe in der PNG ersetzen, die ich in Imageview laden. –

+0

@ Primož'c0dehunter'Kralj :(Hast du das versucht? –

+0

Ja, es tut nichts. Das PNG, das ich lade schon hat einen schwarzen Hintergrund (die ich entfernen möchte). –

Verwandte Themen