2

我正在使用 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 中。但是,这样应用程序会大大减慢速度。

4

1 回答 1

0

我是 Fresco 团队的一员,也许可以提供帮助。你用的是什么版本的 Fresco?我们最近修复了一个错误,该错误会导致某些本地图像显示为缩略图。这绝对看起来像是该错误的表现,升级到最新的 Fresco 可能会有所帮助。

于 2015-12-03T21:58:33.393 回答