2010-10-27 29 views
4

我在我的應用程序中有一些.png文件。我需要在運行時加載它們,並從中獲取特定像素的確切顏色。重要的是,我不想縮放這些圖片。我不直接在用戶界面上顯示它們,它們用作地圖。Android 2.2扭曲圖片顏色?

現在,在Android 1.5上,這沒有問題。我將這些圖像放在'/ res/drawable'目錄中,用BitmapFactory將它們加載到Bitmap對象中,並使用它獲取所需像素的顏色。例如。像素(100,50)具有RGB(100,1,100)的顏色。 (相同像素),所以我得到RGB(99,3,102)/ RGB(101,2,99)/等相同的(100) ,50)像素。我檢查了Bitmap對象的分辨率,似乎沒有得到縮放。

有人可以解釋一下,爲什麼我會得到扭曲的顏色值?

回答

1

去讓自己一個位圖完全相同的像素的顏色。使該位圖的大小與當前正在使用的分辨率相同。加載它並檢查你遇到問題的同一像素(或任何像素)的RGB值。

這應該告訴你,您的問題是縮放,這是我認爲的問題,或者可能是顏色轉換中的問題。

+0

我做了它,創建了一個大小相同的位圖,並用一種​​顏色(100,22,100)填充它,加載它,並嘗試獲取不同像素的顏色值。我有不同的顏色(都接近指定的顏色),即使整張照片都充滿了純色......我在這裏錯過了什麼? – 2010-10-27 13:26:42

0

如果你沒有很快找到答案,我的實用主義者會問你自己解析.png是多麼困難,以獲得完全確定性的結果而不依賴於平臺的任何變化。

+0

的確如此,但我認爲這樣的現代框架能夠加載一個該死的.png是一個合理的期望。 – 2010-10-27 18:33:05

+0

嗯,它可以 - 但是希望將其加載作爲數據使用,可能與框架實現者明顯希望支持最佳視覺顯示(可能包括抖動,反鋸齒或者誰知道什麼)不同。很高興你找到了一種方法來實現平臺功能。 – 2010-10-27 18:42:04

2

解決:看來,在Android 2.2上,我必須設置正確的位圖配置。不知何故,2.2以下的版本設法做到這一點(或者可能配置較少的配置,系統正確猜測配置,不知道)。

不管怎麼說,這裏是我現在使用的代碼:不設置「opt.inPreferredConfig」工作得很好

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

我的2.3設備(Nexus One和S),但現在看來,2.2它需要精確位RGB。