4

I create app called it ( app A ) which need to store large No. of high resolution images in res drawable folder , ( i know that i can downloaded remotely , but i need to keep it in drawable res folder ) , its:

3000 x 4000 JPEG images taken by digital camera , as this will lead to unacceptable increase app size and lead to rise memory exception when run it on device ,so can we create another app called
( app B ) , just for resizing the images , which will pick this images that will be stored on SD ( just for purpose of resizing ), then resize it to smaller sized images but without loss image quality and keep high image resolution , then save it again to SD either with PNG or JPEG format , so then i can take images from SD card then save it to ( app A ) resource file and use it , with reasonable size and high resolution ,

hope if any one can supply tutorial or link explaining that or an full code answer applying this ,

Note : i tried using computer software as : photoshop or format factory but all affect the resolution.

your help will be highly appreciated and thanks.

4

4 に答える 4

4

これは、画像のタイリングを使用して解決するのが最適です。画像をいくつかの小さな「タイル」、たとえば500x500pxに分割し、グリッドに配置します。お気に入りのレイアウトを選択します。ズームインしてレンダリングする場合、画面に表示されているタイルのみが描画されます。

詳細については、以下のリファレンスを参照してください:Androidで大きな画像(10000x10000)を並べてスクロールする方法

画像を分割するには、次の手順に従ってください:Android-Split Drawable

非常にスムーズな動作を実現するために、元の画像から縮小された画像を追加で作成し、グリッドがズームアウトされたときに縮小されたタイルを使用できます。ユーザーがズームインすると、元の解像度に戻ります。

編集

私の目標は3000*4000の解像度の大きな写真を持っています私はそれをより小さなサイズに変換したいが、同じ解像度を維持したい

覚えておくべきいくつかの概念があります:

  1. 画像の元の解像度(あなたの場合は3000x4000ピクセル)
  2. ディスプレイの解像度。たとえば、Nexus4のディスプレイは768x1,280ピクセルです。ディスプレイには重要な特性があります。DPIまたは1インチあたりのドット数です。これは、物理画面上で合わせて1インチ(25.4mm)を測定するピクセル数です。iPhone上のAppleの「網膜」ディスプレイのDPIは326です。これはシャープネスのベンチマークです。この画面のピクセルは小さすぎて、人間の目では通常の保持距離で個別に/シャープに見ることができません。古いモノトーンLCDディスプレイには、30〜60の範囲のDPIがあります。個々のピクセルの正方形の形状を簡単に確認できます。
  3. ディスプレイに表示される画像の部分-ビューポート。2つの異なる極端があります:

    1. ズームアウト:ディスプレイに全体像を表示したい。あなたの場合、画像にはディスプレイよりも多くのピクセルがあります(ディスプレイには、元の画像を元の解像度で表示するのに十分なピクセルがないという物理的な制限があります)。したがって、ディスプレイ上の1つのピクセルは、からのピクセルのグループをレンダリングします。画像、色と明るさの平均、または
    2. 自然な解像度:自然な解像度とは、元の画像の1ピクセルが画面の正確に1ピクセルに表示される場所です。あなたの場合、画像の約4分の1しか見ることができません。このスケーリングは最大のシャープネスを備えていますが、目が実際に個々の表示ピクセルを見ることができないため、画像の細部が小さすぎて見えない場合があります。
    3. ズームイン:画像のさらに小さな部分をディスプレイに表示したい場合、画像の元のピクセルは実際にはディスプレイよりも大きくなります。ここでは、画像の1ピクセルが、ディスプレイ上の複数または複数のピクセルに表示されます。

これで、Androidイメージライブラリが役立ちます。ディスプレイに画像をレンダリングすると、ライブラリは画像を拡大縮小してディスプレイのピクセルに「適合」させます。実際の画像は変更されません。

この新しい言語で、基本的な制約を確認し、それによってどのように進めるかを決定できることを願っています。

于 2012-12-11T01:12:34.273 に答える
1

あなたがすでにフォトショップを試してみて、解像度に関して容認できない結果を得ているとあなたが言ったように、

Photoshop CSとCS2にのみ見られる簡単なトリックがあります

When you want to reduce an image go to the Image> Image Size menu. Click on 
Resample Image and choose Bicubic Sharper from the drop-down menu. This is the 
best setting for making sure that an image doesn't blur. The example photo of the
flower started at 2,000 pixels across. I stepped it down to 250, and then again 
to 125 with almost no loss of sharpness. 

覚えておくべきもう一つのこと

when resizing is to try to do it only once on an image.
Many people will resize repeatedly as they search for the perfect fit for 
a design element, and then end up with an image with a lot of blur. It's always
better to experiment on a duplicate of the image. Then, when you've settled on 
the final dimensions, you can go back to the original and resize it just once.

私はすでにそれを自分で試し、小さなサイズで素晴らしい結果の画像解像度を持っています。

このリンクから適応:http ://www.photoshopsupport.com/tutorials/jennifer/bicubic.html

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

于 2012-12-12T11:41:41.607 に答える
1

BitmapFactory.Options.inSampleSizeを使用して、サブサンプリングされたビットマップを読み取ります。

BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inSampleSize = 2;
Bitmap bitmap = BitmapFactory.decodeFile(pathName, opts);

そして、Bitmap.compress()を使用してビットマップをSDカードに保存します。

編集:それでも解像度を維持したい場合は、BitmapFactory.Options.inPreferredConfig = Bitmap.Config.RGB_565;ビットマップをデコードするように設定してみてください。ほとんどのデフォルト構成はRGB_8888であるため、これによりメモリコストを半分に削減できます。

于 2012-12-06T09:19:53.023 に答える
1

画像のサイズを小さくするには、基本的に3つの方法があります。

  • サイズや品質を下げる(たとえば、ピクセルの量や各ピクセルのサイズを減らすことによって)-Jpegはこれと非常によく似た処理を行います。
  • ファイルを圧縮します-これはGIFとPNGが行うことです。
  • ベクターグラフィックを使用します。

あなたはデジタルカメラのjpeg画像をさらに圧縮することについて話しているので、品質を落とさずに画像自体をさらに減らすためにできることはあまりありません(JPEGはすでに品質を下げ、ファイルを圧縮します。これが、で最も使用されているタイプである理由ですウェブ)。品質をさらに低下させずにファイルを圧縮しようとしても、あまり意味がありません(ただし、いくつかの異なる圧縮スキームを試すことができ、適切なスキームを実行して大幅な削減を実現できる可能性はほとんどありません)。

理論的には、すべての画像を1つの画像にまとめて、1つの画像として圧縮できれば、ある程度の根拠を得ることができますが、そのようなサイズについて話す場合、そのようなサイズを処理できる可能性はほとんどありません。巨大なファイル。

于 2012-12-12T11:26:24.180 に答える