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 に表示されます。ただし、この方法ではアプリケーションの速度が大幅に低下します。