2016-04-18 1 views
6

Glide image loading libraryを使用していますが、ビットマップのサイズを変更する際に問題があります。次のコードを使用している場合グライドアップスケーリングを停止するには?

Glide.with(getActivity()) 
    .load(images.get(i)) 
    .asBitmap().centerCrop() 
    .into(new SimpleTarget<Bitmap>(1200, 1200) { 
     @Override 
     public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) { 

     } 
    }); 

をすべて単一のビットマップは、指定された大きさにリサイズされます。したがって、画像が400x300の場合は、1200x1200までアップスケーリングされますが、これは嫌です。イメージが指定されたサイズよりも小さい場合、イメージのサイズを変更しないようにするにはどうすればよいですか?

centerCropを考慮して、指定したサイズよりも大きいすべての画像のサイズを変更したいので、サイズを指定しています。画像が指定されたサイズよりも小さい場合は、サイズを変更したくありません。

+0

ScaleType centerCropは、あなたのイメージはとても中央から拡大します画像私は滑空ユーザーではありませんが、私はasBitmap()の後にそのcenterCrop()を削除すると思います。-might-あなたを助けてください - 編集:また、サイズを1200x1200に設定しているので、移動します何とかそれを変更する必要があります – Guardanis

+0

@Guardanis私はそれを試みました、そして、それは指定された次元を完全に無視するだけです。 – Jack

+0

寸法を伸ばさないように指定する理由は何ですか?あなたは何を達成しようとしていますか? – headsvk

答えて

7

指定されたサイズよりも大きいすべての画像を、centerCropを考慮して にサイズ変更します。イメージが指定されたサイズよりも小さい である場合、サイズを変更したくありません。

あなたは、カスタム変換して、この動作を得ることができます。

public class CustomCenterCrop extends CenterCrop { 

    public CustomCenterCrop(BitmapPool bitmapPool) { 
     super(bitmapPool); 
    } 

    public CustomCenterCrop(Context context) { 
     super(context); 
    } 

    @Override 
    protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) { 
     if (toTransform.getHeight() > outHeight || toTransform.getWidth() > outWidth) { 
      return super.transform(pool, toTransform, outWidth, outHeight); 
     } else { 
      return toTransform; 
     } 
    } 
} 

をし、このようにそれを使用します。

Glide.with(getActivity()) 
    .load(images.get(i)) 
    .asBitmap() 
    .transform(new CustomCenterCrop(getActivity())) 
    .into(new SimpleTarget<Bitmap>(1200, 1200) { 
     @Override 
     public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) { 

     } 
    }); 
関連する問題