我正在使用 Fresco 显示来自本地驱动器的图像。我的问题是 Fresco 不会在 DraweeView 中显示完整的高质量图像,而是显示质量非常低的微小图像,如下所示:
(我也看过这张照片,actualImageScaleType="fitCenter"
所以不仅仅是它们是小尺寸的高质量照片,它们实际上质量很差,分辨率也很低。)
这些图像是由手机的 8 兆像素相机拍摄的,因此质量很好。我也在我的电脑上看过它们,并看到了高质量的 8 兆像素图像。所以我一定是做错了什么,并以某种方式显示了低质量的图像。
在布局 xml 我有以下定义 SimpleDraweeView 元素:
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/image_gallery_drawee_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
fresco:placeholderImage="@drawable/ic_photo_black_48dp"
fresco:placeholderImageScaleType="fitCenter"
fresco:actualImageScaleType="center" />
然后在代码中:
GenericDraweeHierarchy hierarchy = new GenericDraweeHierarchyBuilder(context.getResources())
.setActualImageScaleType(ScalingUtils.ScaleType.FIT_XY)
.build();
DraweeController controller = Fresco.newDraweeControllerBuilder()
.setUri(Uri.parse(FILE_LOADER_PREFIX.concat(images.get(position)
.getLocalImagePath())))
.setOldController(draweeView.getController())
.build();
draweeView.setHierarchy(hierarchy);
draweeView.setController(controller);
Fresco 需要做什么才能显示高分辨率/高质量图像?
更新:这些图像没有被压缩,只是通过fileOutputStream.write(imageByteArray)
. 现在如果我改变它并使用压缩图像bitmap.compress(Bitmap.CompressFormat.JPEG, 75, bufferedOutputSteam)
,一个高质量的图像将显示在 DraweeView 中。但是,这样应用程序会大大减慢速度。