我正在下载位图。将其复制到可变位图中,并将所有Magenta像素替换为透明像素。特别是复制部分对我来说似乎浪费了资源。我怎样才能改善这个?
Bitmap mIcon11 = null;
try {
InputStream in = new java.net.URL(urldisplay).openStream();
mIcon11 = BitmapFactory.decodeStream(in);
} catch (Exception e) {
Log.d(TAG, e.getMessage());
e.printStackTrace();
}
Bitmap copy = mIcon11.copy(Bitmap.Config.ARGB_8888, true);
mIcon11.recycle();
int [] allpixels = new int [ copy.getHeight()*copy.getWidth()];
copy.getPixels(allpixels, 0, copy.getWidth(), 0, 0, copy.getWidth(), copy.getHeight());
for(int i =0; i < copy.getHeight() * copy.getWidth(); i++)
{
if( allpixels[i] == Color.MAGENTA)
{
allpixels[i] = Color.TRANSPARENT;
}
}
copy.setPixels(allpixels, 0, copy.getWidth(), 0, 0, copy.getWidth(), copy.getHeight());
答案 0 :(得分:0)
尝试类似的事情:
Bitmap finalBitmap = Bitmap.createBitmap(mIcon11.getWidth(), mIcon11.getHeight, Bitmap.Config.ARGB_8888);
for(int x = 0; x < mIcon11.getWidth(); x++){
for(int y = 0; y < mIcon11.getHeight(); y++){
if(mIcon11.getPixel(x, y) != Color.MAGENTA){
finalBitmap.setPixel(x, y, mIcon11.getPixel(x, y));
}else{
finalBitmap.setPixel(x, y, Color.TRANSPARENT);
}
}
}
我刚刚做到这一点,我应该工作。如果这不起作用,请尝试使用十六进制值而不是颜色(例如:Color.MAGENTA; 0xff00ff)如果您的洋红色与Color.MAGENTA或您想要的任何颜色不同,则可以使用。大多数图像编辑程序显示您的颜色的十六进制值。