web-dev-qa-db-fra.com

Redimensionner des images avec Glide dans un Android ImageView

J'ai beaucoup de doutes sur le traitement des images dans Android et j'espérais voir si vous pouviez les résoudre.

À ce stade, j'ai une image qui occupe 320 dp de haut et une largeur de match_parent, ce qui correspond à environ 60% de l'écran . Cette image de la charge avec Glide, de certaines images en 1080 que j'ai personnellement.

J'ai essayé de faire centroCrop et fitXY, mais toujours déformer les images. Le premier type que je connais coupe l’image, mais le second correspond à une taille, mais il déforme l’image en hauteur ou en largeur.

Est-il possible de l'insérer avec Glide et de le voir tel qu'il est? .__ Quelles propriétés dois-je toucher sur ImageView et quelles propriétés de 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" />

Merci d'avance.

7
Traif

Override doit être accessible via RequestOptions dans la version la plus récente de Glide 4.x Vous pouvez ajouter RequestOptions à apply()

Glide
    .with(context)
    .load(path)
    .apply(new RequestOptions().override(600, 200))
    .into(imageViewResizeCenterCrop);
22
Bhuvanesh BS

dans glide 4.x, 'override' est dans 'apply' 

Glide.with(getBaseContext())
 .load(path)
 .apply(RequestOptions.placeholderOf(R.mipmap.no_wifi)
 .error(R.mipmap.no_wifi)
 .override(500,500))
 .into(mImageView);
3
ArMo 372
Glide
    .with(context)
    .load(path)
    .override(600, 200) 
    .centerCrop() 
    .into(imageViewResizeCenterCrop);

@Raghunandan a raison. Vous devriez essayer de transformer à votre façon.

2
Radhey

Glide 4.x - Si vous voulez obtenir du bitmap, essayez:

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

vous devez faire ce qui suit avec votre imageview: 

        <ImageView
            Android:id="@+id/img"
            Android:layout_width="match_parent"
            Android:layout_height="200dp"
            Android:scaleType="fitCenter" />

et ceci avec votre glisse: 

    Glide.with(getBaseContext())
            .load(path)
            //.placeholder(R.drawable.drawable)
            .error(R.drawable.noimg)
            .animate(R.anim.animation_fade_in)
            .into(mImageView);

Cela fonctionne parfaitement avec moi.

0
Mu'ayyad Ayesh

Si vous voulez charger une image sans utiliser le glissement, vous pouvez utiliser scaleType "fitCenter" ou "centerInside" comme suit -

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

Avec Glide, vous pouvez utiliser le remplacement (w, h). Lorsque vous utilisez la substitution (w, h), glide génère un nouveau bitmap avec la largeur et la hauteur mentionnées dans la substitution (w, h), puis chargez l'image dans ImageView. Vous pouvez utiliser fitCenter () pour aligner l'image. Vous pouvez également utiliser diskCacheStrategy (). Si vous ne l'utilisez pas, Glide n'attrapera que les bitmap nouvellement générés. Si vous souhaitez également récupérer l'image d'origine, utilisez diskCacheStrategy (DiskCacheStrategy.ALL).

Glide.with(context)
            .load(image_path)
            .override(800, 400)
            .fitCenter()
            .diskCacheStrategy(DiskCacheStrategy.ALL)
            .into(imageView)

J'espère que ça aide.

0
Anand Soni