如何在ImageView中用透明顏色(或某種其他顏色)替換黑色?使ImageView以不同顏色顯示圖像的黑色部分
我用畢加索從網頁加載圖像:
Picasso.with(getContext()).load("www.abc.com/a.png").into(myImageView);
目前,它看起來像這樣:
圖像本身就包含着黑色的背景,我想刪除。我嘗試使用myImageView.setColorFilter(Color.BLACK);
,但似乎沒有工作。
如何在ImageView中用透明顏色(或某種其他顏色)替換黑色?使ImageView以不同顏色顯示圖像的黑色部分
我用畢加索從網頁加載圖像:
Picasso.with(getContext()).load("www.abc.com/a.png").into(myImageView);
目前,它看起來像這樣:
圖像本身就包含着黑色的背景,我想刪除。我嘗試使用myImageView.setColorFilter(Color.BLACK);
,但似乎沒有工作。
Andy Developer's answer幫助,但我不得不手動將黑色像素轉換爲我喜歡的像素。它正在工作,但我不確定這是否是最好的方法。
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) { }
});
你可以試試這個。
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) {
}
});
恐怕這不會取代我加載到imageview中的PNG中的黑色。 –
@Primož'c0dehunter'Kralj:(你有沒有試過嗎? –
是的,它什麼也沒做。我加載的PNG已經有黑色背景(我想刪除它)。 –
@普里莫茲 'c0dehunter' Kralj看到我的回答希望這將幫助你。 –
@ akhilesh0707 https://freesound.org/data/displays/186/186942_2594536_wave_M.png –
正確;我想用一些不同的顏色替換它的黑色部分,或者在這些區域使它變得透明。 –