2015-08-14 88 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);