1. ホーム
  2. android

[解決済み] glideを使って画像をビットマップにダウンロードする方法を教えてください。

2022-04-28 14:10:30

質問

URLをダウンロードし ImageView は、Glideを使えばとても簡単です。

Glide
   .with(context)
   .load(getIntent().getData())
   .placeholder(R.drawable.ic_loading)
   .centerCrop()
   .into(imageView);

にダウンロードできないかと考えています。 Bitmap にも対応していますか?他のツールで操作できるような生のビットマップにダウンロードしたいのですが。コードを見てみたのですが、どうすればいいのかわかりません。

どのように解決するのですか?

が表示されていることを確認してください。 最新バージョン

implementation 'com.github.bumptech.glide:glide:4.10.0'

Kotlinです。

Glide.with(this)
        .asBitmap()
        .load(imagePath)
        .into(object : CustomTarget<Bitmap>(){
            override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap>?) {
                imageView.setImageBitmap(resource)
            }
            override fun onLoadCleared(placeholder: Drawable?) {
                // this is called when imageView is cleared on lifecycle call or for
                // some other reason.
                // if you are referencing the bitmap somewhere else too other than this imageView
                // clear it here as you can no longer have the bitmap
            }
        })

ビットマップサイズ。

画像のオリジナルサイズを使用する場合は、上記のようにデフォルトのコンストラクタを使用します。

into(object : CustomTarget<Bitmap>(1980, 1080)

Javaです。

Glide.with(this)
        .asBitmap()
        .load(path)
        .into(new CustomTarget<Bitmap>() {
            @Override
            public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
                imageView.setImageBitmap(resource);
            }

            @Override
            public void onLoadCleared(@Nullable Drawable placeholder) {
            }
        });

古い回答です。

With compile 'com.github.bumptech.glide:glide:4.8.0' 以下

Glide.with(this)
        .asBitmap()
        .load(path)
        .into(new SimpleTarget<Bitmap>() {
            @Override
            public void onResourceReady(Bitmap resource, Transition<? super Bitmap> transition) {
                imageView.setImageBitmap(resource);
            }
        });

について compile 'com.github.bumptech.glide:glide:3.7.0' 以下

Glide.with(this)
        .load(path)
        .asBitmap()
        .into(new SimpleTarget<Bitmap>() {
            @Override
            public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
                imageView.setImageBitmap(resource);
            }
        });

ここで、警告が表示される場合があります。 SimpleTarget is deprecated

理由を教えてください。

SimpleTarget を非推奨とする主な理由は以下の通りです。 GlideのAPI契約を破るように誘惑する方法です。 具体的には、それは、あなたが任意の SimpleTarget がクリアされると、読み込んでいたリソースが消去される可能性があります。 クラッシュやグラフィックの破損につながる。

SimpleTarget は、imageView がクリアされた後にビットマップを使用しないことを確認すれば、まだ使用することができます。