4


2

Android 2.2は画像の色を歪ませますか?

アプリにいくつかの.pngファイルがあります。 実行時にこれらをロードし、それらから特定のピクセルの正確な色を取得する必要があります。 これらの写真を拡大縮小したくないことが重要です。 UIに直接表示するのではなく、マップとして機能します。

さて、Android 1.5では、これに問題はありません。 これらの画像を「/ res / drawable」ディレクトリに配置し、BitmapFactoryを使用してそれらをBitmapオブジェクトにロードし、それを使用して目的のピクセルの色を取得します。 E.g. ピクセル(100、50)の色はRGB(100、1、100)です。

Android 2.2 thoでは、同じ手順で色が変化します(同じピクセルに対して)ので、RGB(99、3、102)/ RGB(101、2、99)/などを取得します 同じ(100、50)ピクセルの場合。 Bitmapオブジェクトの解像度を確認しましたが、スケーリングされていないようです。

誰かが色の値が歪んでいる理由を説明できますか?

4 Answer


2


解決済み:Android 2.2では、正しいビットマップ構成を設定する必要があるようです。 どういうわけか、2.2より前のバージョンでこれを行うことができました(または、それらでサポートされている構成が少なく、システムが構成を正しく推測したため、わかりません)。

とにかく、私が今使っているコードは次のとおりです。

BitmapFactory.Options opt = new BitmapFactory.Options();
        opt.inDither=false;
        opt.inPreferredConfig = Bitmap.Config.ARGB_8888;
        Bitmap mask = BitmapFactory.decodeResource(getResources(), R.drawable.picture, opt);


1


問題のピクセルとまったく同じ色のビットマップを作成してください。 このビットマップのサイズを、現在使用しているものと同じ解像度にします。 それをロードし、問題が発生している同じピクセル(または任意のピクセル)のRGB値を確認します。

これは、あなたの問題がスケーリングであるかどうかを教えてくれるはずです。


0


すぐに答えが見つからない場合、プラグマティストの連中は、.pngを自分で解析するのがどれだけ難しいかを尋ね、プラットフォームの変更に関係なく完全に決定的な結果を取得します。


0


2.3デバイス(Nexus OneおよびS)は、「opt.inPreferredConfig」を設定しなくても正常に機能しましたが、2.2では正確なRGBが必要です。