非常に大きな 5 MB 以上の画像をダウンロードする必要があります。
電話のメモリを節約するために、表示する前に画像をスケーリングすることは承知していますが、大きな画像をダウンロードする際の問題は依然として残っています。
イメージ全体をダウンロードしてからスケーリングするのではなく、イメージの 50% 縮小バージョンをダウンロードするにはどうすればよいですか?
ダウンロード元のサーバーでサポートされている必要があります。
サーバーが自分のものでない場合は、そのサーバーのドキュメントを調べる (またはリバース エンジニアリングする) 必要があります。
サーバーがあなたのものである場合、それは使用されるテクノロジーによって異なります。使用している特定のサーバー側テクノロジの画像操作ライブラリを検索します。
imgur.comの場合、
ここを見てください:http://api.imgur.com/
Imgur では、IP ごとに 1 時間あたり 500 回、登録している場合は 1000 回の通話を行うことができます。アップロード数は 10 倍になります。
画像に関するメタデータは、http: //api.imgur.com/resources_anon#image_hashに記載されています。api.imgur.com/2/image/[hash].xml
または のいずれかにアクセスし、応答から(90x90) または(?x640) のapi.imgur.com/2/image/[hash].json
いずれかを選択します。imgur はホームページのサムネイル (160x160) も生成することに注意してください。これらの URL はimage.links.small_square
image.links.large_thumbnail
i.imgur.com/[hash]b.jpg
大きな画像へのリンクは ですi.imgur.com/[hash].jpg
。したがって、リンクがhttp://i.imgur.com/xDpEF.jpg
またはhttp://imgur.com/xDpEF
の場合、xDpEF
必要なハッシュは です。
Web サーバーが縮小バージョンを提供しない場合、一部のイメージの縮小バージョンをダウンロードすることはできません。
それらをホストする Web/サーバー上でスケーリングする必要があります。したがって、問題はJava/Androidではなく、Webサーバー上であり、それに依存しています。
ダウンロードする前にサーバーがイメージの縮小をサポートしていない限り、できません。サーバーにそのオプションがない場合、最適なオプションは、BitmapFactory.Options inSampleSize を使用して、ストリームから画像を読み取るときに縮小することです。
画像をファイルにダウンロードしてから、withを使用BitmapFactory
しBitmapFactory.Options
て画像のサイズを決定する必要があります。画像サイズから、拡大縮小する量を計算し、もう一度BitmapFactory
(with Options
)を使用して、拡大縮小されたバージョンの画像を読み込みます。
他の回答に加えて、サーバー側に特別なソフトウェアがなくても機能するソリューションが 1 つあります。
画像が JPEG 形式でサーバーに保存されていて、インターレース/プログレッシブ モードを使用している場合、サムネイルを作成するために画像を部分的にダウンロードできます。
この特別なモードは、ダウンロード中にプレビュー イメージを表示するように設計されています。プレビュー画像を圧縮すると、サムネイルとして使用できる画像になる場合があります。
ただし、この方法でサムネイルの読み込みをサポートするライブラリはわかりません。
サーバーによって異なります。サーバーはイメージの縮小をサポートする必要があります。
サーバーからダウンロードする場合、サーバーは 50% スケールまたは 25% スケールなどの多くの形式でスケーリングされたイメージを持っている必要があるため、それは不可能です。したがって、イメージをダウンロードしている場所からサーバーが維持され、バックエンドでイメージをスケーリングする方法が提供されている場合にのみ可能です。
サーバーからイメージをダウンロードしている場合、イメージをスケーリングするためのバックエンド手順なしでは、サーバーからスケーリングされたイメージを取得することはできません。