簡體   English   中英

Android的位圖getPixel取決於密度嗎?

[英]Android bitmap getPixel depends on density?

正確的代碼。 給定

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), resId);
Drawable drawable = getResources().getDrawable(resId);

我懂了

bitmap.getWidth() == drawable.getIntrinsicWidth() == 9

盡管實際圖像為6x6像素。 關鍵是密度為240 ,因此比例尺為1.5DENSITY_DEFAULT = 160 本身不是問題,而是bitmap.getPixel(x, y); 確實適用於放大的尺寸。

設置位圖的密度似乎沒有什么區別。 如何查詢圖像中的實際像素? 我寧願不將所有內容除以密度(有時甚至不可能)。

謝謝

首先對這里發生的事情發表一些評論。 您獲得的位圖實際上已重新采樣; 其像素數據用於9x9圖像。 該方法bitmap.getWidth()不受調用bitmap.setDensity()

要在阻止Android框架為您重新采樣的同時加載Bitmap,請創建一個BitmapFactory.Options實例,並將inScaled設置為false ,然后將其傳遞給encodeResource():

BitmapFactory.Options options = new BitmapFactory.Options();
options.inScaled = false;
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), resId, options);
// Now bitmap.getWidth() == 6

請注意,這是UI中使用的重采樣版本(除非您明確地解決了該問題),因此如果要執行bitmap.getPixel(x,y); 在用戶界面中繪制的位圖上,不應使用inScaled = false

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM