Android 将大图像适配到小图像视图中,质量与原始图像一样好?

Android 将大图像适配到小图像视图中,质量与原始图像一样好?,android,android-imageview,Android,Android Imageview,您好,我正在开发一个很好的android应用程序,在这个应用程序中,我需要将大位图放入小尺寸的imageview。我正在使用大小为300dp X 300dp的imageview来显示1024 X 780的大图像 如何使大图像变小,质量与原始图像一样好?您是否尝试了im.setScaleType(ScaleType.FIT_XY)尝试以下方法: public static Bitmap getResizedBitmap(Bitmap bm, int newHeight, int newWidth)

您好,我正在开发一个很好的android应用程序,在这个应用程序中,我需要将大位图放入小尺寸的
imageview
。我正在使用大小为300dp X 300dp的
imageview
来显示1024 X 780的大图像


如何使大图像变小,质量与原始图像一样好?

您是否尝试了
im.setScaleType(ScaleType.FIT_XY)
尝试以下方法:

public static Bitmap getResizedBitmap(Bitmap bm, int newHeight, int newWidth) {
    int width = bm.getWidth();
    int height = bm.getHeight();
    float scaleWidth = ((float) newWidth) / width;
    float scaleHeight = ((float) newHeight) / height;
    // CREATE A MATRIX FOR THE MANIPULATION
    Matrix matrix = new Matrix();
    // RESIZE THE BIT MAP
    matrix.postScale(scaleWidth, scaleHeight);
    // RECREATE THE NEW BITMAP
    Bitmap resizedBitmap = Bitmap.createBitmap(bm, 0, 0, width, height,
            matrix, false);
    return resizedBitmap;

}
易于使用:

Bitmap bmResized=getResizedBitmap(yourBitmap,newHeight,newWidth);
然后你就可以调整图像的大小了

注意:如果要调整图像资源的大小,请使用此选项转换为位图:

Bitmap bmOrginal=BitmapFactory.decodeResource(this.getResources(), R.drawble.yourRes);
Bitmap bmResized=getResizedBitmap(bmOrginal,newHeight,newWidth);
然后设置已调整大小的图像:

image.setImageBitmap(bmResized);

@尼古拉的评论回答了我的问题。我写这封信是为了给未来的读者


您应该制作一个大小为300x300但保留其纵横比的缩略图。您可以在画布上绘制更大的图像,画布的中心是一些填充空间其余部分的颜色


您应该制作一个大小为300x300但保留其纵横比的缩略图。你可以在画布上画更大的图像,画布的中心用一些颜色填充剩余的空间。不要用这个
FIT_XY
不会保持纵横比,会拉伸图像
FIT_CENTER
更合适。由于android中过滤的工作方式,为了获得高质量的大小调整,我发现如果源和目标大小相差超过2倍,则至少需要进行两次调整。在1024x780到300x228的情况下,我会分两次完成:1024x780[超过dest的2倍,所以]→ 600x456[dest的2倍]→ 300x228。但是,这太慢了,而且可能没有必要(这是一个性能/质量权衡)。+1谢谢,伙计!你救了我一天!它就像一个符咒。再次感谢。