Androidでの画像の処理については多くの疑問があり、それらを解決できるかどうかを確認したいと考えていました。
この時点で、画像の高さは320 dpで、match_parentの幅は画面の約60%です。私が個人的に持っている1080のいくつかの画像の、Glideによる負荷のこの画像。
CentroCropとfitXYを作成しようとしましたが、常に画像を変形します。私が知っている最初のタイプは画像をカットしますが、2番目のタイプはサイズに適合しますが、画像を高または広に変形します。
Glideで挿入して、そのまま表示する方法はありますか? ImageViewとGlideのどのプロパティに触れる必要がありますか?
<ImageView
Android:id="@+id/img"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:nestedScrollingEnabled="false"
app:layout_collapseMode="parallax"
Android:scaleType="fitXY"
app:layout_scrollFlags="scroll|enterAlways" />
Override
は、_Glide 4.x
_の最新バージョンのRequestOptions
を介してアクセスする必要があります。 apply()
を介してRequestOptions
を追加できます
_Glide
.with(context)
.load(path)
.apply(new RequestOptions().override(600, 200))
.into(imageViewResizeCenterCrop);
_
glide 4.xでは、「オーバーライド」は「適用」にあります。
Glide.with(getBaseContext())
.load(path)
.apply(RequestOptions.placeholderOf(R.mipmap.no_wifi)
.error(R.mipmap.no_wifi)
.override(500,500))
.into(mImageView);
Glide
.with(context)
.load(path)
.override(600, 200)
.centerCrop()
.into(imageViewResizeCenterCrop);
@Raghunandanは正しいです。あなた自身の方法で変換を試してください。
Glide 4.x-ビットマップを取得したい場合は、次を試してください:
Glide.with(mContext).asBitmap().
load(pictureUri)
.apply(new RequestOptions().override(50, 50))
.listener(new RequestListener<Bitmap>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target, boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(Bitmap resource, Object model, Target<Bitmap> target, DataSource dataSource, boolean isFirstResource) {
// resource is your loaded Bitmap
imgView.setImageBitmap(resource);
return true;
}
}).submit();
imageviewで以下を行う必要があります。
<ImageView
Android:id="@+id/img"
Android:layout_width="match_parent"
Android:layout_height="200dp"
Android:scaleType="fitCenter" />
そしてこれはあなたのグライドで:
Glide.with(getBaseContext())
.load(path)
//.placeholder(R.drawable.drawable)
.error(R.drawable.noimg)
.animate(R.anim.animation_fade_in)
.into(mImageView);
これは私にぴったりです。
グライドを使用せずに画像をロードする場合、次のようにscaleType "fitCenter"または "centerInside"を使用できます-
<ImageView
Android:id="@+id/img"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:nestedScrollingEnabled="false"
app:layout_collapseMode="parallax"
Android:scaleType="centerInside"
app:layout_scrollFlags="scroll|enterAlways" />
Glideでは、override(w、h)を使用できます。 override(w、h)を使用すると、glideはoverride(w、h)に記載されている幅と高さの新しいビットマップを生成し、イメージをImageViewにロードします。 fitCenter()を使用して画像を整列できます。 diskCacheStrategy()を使用することもできます。使用しない場合、Glideは新しく生成されたビットマップのみをキャッチします。元のイメージもキャッチする場合は、diskCacheStrategy(DiskCacheStrategy.ALL)を使用します。
Glide.with(context)
.load(image_path)
.override(800, 400)
.fitCenter()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(imageView)
これがお役に立てば幸いです。