[英]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.5
到DENSITY_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.