web-dev-qa-db-ja.com

ImageViewでGlideを使用して画像のサイズを変更するAndroid

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" />
10
Traif

Overrideは、_Glide 4.x_の最新バージョンのRequestOptionsを介してアクセスする必要があります。 apply()を介してRequestOptionsを追加できます

_Glide
    .with(context)
    .load(path)
    .apply(new RequestOptions().override(600, 200))
    .into(imageViewResizeCenterCrop);
_
37
Bhuvanesh BS

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);
4
ArMo 372
Glide
    .with(context)
    .load(path)
    .override(600, 200) 
    .centerCrop() 
    .into(imageViewResizeCenterCrop);

@Raghunandanは正しいです。あなた自身の方法で変換を試してください。

2
Radhey

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();
0
Lam Nguyen

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);

これは私にぴったりです。

0
Mu'ayyad Ayesh

グライドを使用せずに画像をロードする場合、次のように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)

これがお役に立てば幸いです。

0
Anand Soni