2015-08-14 58 views
0

我试图在ImageView中显示this transparent image为什么图像背景是紫色

我与此类下载和设置图像:

public class DownloadImageTask extends AsyncTask<String, Void, Bitmap> { 
    private String TAG = "DownloadImageTask"; 
    ImageView bmImage; 

    public DownloadImageTask(ImageView bmImage) { 
     this.bmImage = bmImage; 
    } 

    protected Bitmap doInBackground(String... urls) { 
     String urldisplay = urls[0]; 
     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(); 
     } 
     return mIcon11; 
    } 

    protected void onPostExecute(Bitmap result) { 
     bmImage.setImageBitmap(result); 
    } 
} 

不幸的是,背景变紫。为什么会变成紫色,我该如何解决这个问题?

+0

检查您的XML布局中是否为ImageView定义了背景颜色。你认为其他控件会发生什么?如果他们也获得相同的颜色,那么它可能是查看背景。 – Raghu

+0

@拉胡我还没有设置颜色。即使我设置了颜色,它总是紫色。品红我相信是。 –

回答

0

不是一个解决方案,但更像是一个修复。

我创建了一个可变位图并改变了颜色。

Bitmap copy = result.copy(Bitmap.Config.ARGB_8888, true); 

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

    bmImage.setImageBitmap(copy);