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