0
我只是用這個代碼的形式開發者的網站上的屏幕地產擴展位圖,如何根據現有的
public static int calculateInSampleSize(BitmapFactory.Options options,int reqWidth,int reqHeight){
//Raw height & width of the image
final int height = options.outHeight;
final int width = options.outWidth;
int inSampleSize = 1;
if (height>reqHeight || width>reqWidth) {
//Calculate ratios of height & width to requested height & width.
final int heightRatio = Math.round((float)height/(float)reqHeight);
final int widthRatio = Math.round((float)width/(float)reqWidth);
inSampleSize = heightRatio < widthRatio ? heightRatio : widthRatio;
}
return inSampleSize;
}
public static Bitmap decodeSampledBitmapFromresource(Resources res, int resId,int reqWidth,int reqHeight){
//First decode with inJustDecodeBounds = true to check Dimensions
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(res, resId, options);
//Calculate inSampleSize
options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);
//Decode Bitmap with inSampleSize Set
options.inJustDecodeBounds = false;
return BitmapFactory.decodeResource(res, resId, options);
}
通過使用此代碼我真的成功地調用縮放位圖使用這行代碼我ImageViews,
image.setImageBitmap(decodeSampledBitmapFromresource(getResources(), resId, width, height));
image.setImageBitmap(decodeSampledBitmapFromresource(getResources(), res, 640, 360));
這行代碼實際上是將我的圖片縮放到我想要的任何尺寸。
但我在這裏面臨的問題是,「內存不足」。
- 現在我擁有的圖片的最大尺寸是1280 * 720。
- 如何根據屏幕縮放比特位圖可用的房屋。
int screenDensity = getResources().getDisplayMetrics().densityDpi;
這將返回屏幕密度,如160,320,480,600,720,....
ImageView image = new ImageView(this);
if (screenDensity<=240) {
image.setImageBitmap(decodeSampledBitmapFromresource(getResources(), res, 320, 180));
} else if (screenDensity<=320) {
image.setImageBitmap(decodeSampledBitmapFromresource(getResources(), res, 430, 240));
} else if (screenDensity<=640) {
image.setImageBitmap(decodeSampledBitmapFromresource(getResources(), res, 640, 360));
} else {
image.setImageBitmap(decodeSampledBitmapFromresource(getResources(), res, 1280, 720));
}
background_image.addView(image);
我第一次運行:
我根據設備的密度使用陷害我的代碼在一臺設備上,我意識到自己在一個錯誤的軌道上,對於一些具有大屏幕的Local Phablets,Tablets,mobile,屏幕密度較低。
例如,
- Micromax的CanvasA116具有大於1280×720的屏幕分辨率,但小於320的整數值的密度下降低。
- 一些本土平板具有相同的屏幕分辨率小於160
- 索尼XPERIA電子商務屏幕像素密度爲320 * 480的屏幕分辨率爲320
的屏幕像素密度下來得那麼,對的Xperia E類設備我的上面的方程是完美的。但對於屏幕分辨率較高的設備,但在低屏幕密度設備上,應用的圖像實際上完全是BLURRED或OUTSHAPED,無法識別。
我也試過使用因子屏幕寬度和高度。但對於低堆設備來說,這太致命了。
所以,現在的問題是:
我怎樣才能完美地按比例調整我的位圖到設備無關密度&決議。由於在這種情況下,Bitmpa的寬度&高度是完全未知的!
使用縮略圖和有ü可以指定尺寸也縮略圖 – KOTIOS
這裏看到我的回答是:http://計算器。com/questions/17744966 /如何從照片中拍攝縮略圖 – KOTIOS
感謝莫妮卡的迴應。在你的解決方案中,如何獲取THUMBSIZE&我有圖像動態加載 –