2012-05-15 59 views
1

我有一個32x32的圖像,我把它放在可繪製的文件夾中,並從服務器下載相同的圖像應用程序。但下載一個看起來更大(更像48x48)和像素化。Drawable.createFromStream和getResources()。getDrawable,爲什麼他們的輸出是不同的?

服務器代碼(C#)

 MemoryStream tms = new MemoryStream(); 
     image.Save(tms, System.Drawing.Imaging.ImageFormat.Png); 
     byte[] imageData = tms.ToArray(); 
     //send data to phone 

應用程序代碼(Java)的

ByteArrayInputStream memStream = new ByteArrayInputStream(imageData); 
    Drawable image = Drawable.createFromStream(memStream, ""); //big image and pixelated 
    memStream.close(); 

,但如果我是從資源,它總是小

Drawable image = getResources().getDrawable(R.drawable.image); 

ImageView的XML加載相同的文件

<ImageView 
    android:id="@+id/image" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_vertical" 
    android:focusable="false" 
    android:scaleType="center" /> 

編輯:

最後,設置TargetDensity的BitmapDrawable工作!

Bitmap bmp = BitmapFactory.decodeByteArray(imageData, 0, 
     imageData.length); 
BitmapDrawable image = new BitmapDrawable(bmp); 
image.setTargetDensity(bmp.getDensity()); 

回答

0

您的影像會重新調整取決於設備的像素密度,請嘗試使用BitmapFactory.decodeStream(...),並使用new BitmapDrawable(Bitmap)如果你想要一個可繪製對象包裹。

+0

同樣的結果 繪製的圖像=新BitmapDrawable( \t \t \t \t BitmapFactory.decodeStream(memStream)); – xmen

+1

最後,設置BitmapDrawable的TargetDensity工作! – xmen

相關問題