1

我有一个 32x32 的图像,我已将其放入可绘制文件夹中,并且从服务器下载相同的图像应用程序。但下载的一个看起来更大(更像 48x48)和像素化。

服务器代码 ( 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);

图像视图 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" />

编辑 :

最后,设置 BitmapDrawable 的 TargetDensity 成功了!

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

1 回答 1

0

您的图像会根据设备的像素密度重新缩放,如果您想要一个 Drawable 对象,请尝试使用BitmapFactory.decodeStream(...)和包装它。new BitmapDrawable(Bitmap)

于 2012-05-15T01:55:26.263 回答