如何让Fresco显示完整质量的图像

时间:2015-11-25 10:56:04

标签: android image fresco

我正在使用Fresco显示本地驱动器中的图像。我的问题是Fresco不会在DraweeView中显示完整的高质量图像,而是显示质量非常低的微小图像,如下所示:

Fresco displaying a low quality image

(我也用actualImageScaleType="fitCenter"查看了图片,所以不仅仅是它们是尺寸较小的高质量图片,而且质量非常差,而且分辨率非常低。)

图像由手机的800万像素摄像头拍摄,因此质量很好。我也在电脑上看了它们,看到了高质量的800万像素图像。因此,我必须做错事,并以某种方式显示低质量的图像。

在布局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中显示高质量图像。但是,通过这种方式,应用程序会大幅减慢速度。

1 个答案:

答案 0 :(得分:0)

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