resize image in android drawable

為{幸葍}努か 提交于 2019-12-18 07:19:17

问题


I have full resolution images in drawable folder need to resize according to phone screen size how to do that ?


回答1:


Do it like this

/************************ Calculations for Image Sizing *********************************/ 
public Drawable ResizeImage (int imageID) { 
//Get device dimensions 
Display display = getWindowManager().getDefaultDisplay(); 
double deviceWidth = display.getWidth(); 

BitmapDrawable bd=(BitmapDrawable) this.getResources().getDrawable(imageID); 
double imageHeight = bd.getBitmap().getHeight(); 
double imageWidth = bd.getBitmap().getWidth(); 

double ratio = deviceWidth / imageWidth; 
int newImageHeight = (int) (imageHeight * ratio); 

Bitmap bMap = BitmapFactory.decodeResource(getResources(), imageID); 
Drawable drawable = new BitmapDrawable(this.getResources(),getResizedBitmap(bMap,newImageHeight,(int) deviceWidth)); 

return drawable; 
} 

/************************ Resize Bitmap *********************************/ 
public Bitmap getResizedBitmap(Bitmap bm, int newHeight, int newWidth) { 

int width = bm.getWidth(); 
int height = bm.getHeight(); 

float scaleWidth = ((float) newWidth) / width; 
float scaleHeight = ((float) newHeight) / height; 

// create a matrix for the manipulation 
Matrix matrix = new Matrix(); 

// resize the bit map 
matrix.postScale(scaleWidth, scaleHeight); 

// recreate the new Bitmap 
Bitmap resizedBitmap = Bitmap.createBitmap(bm, 0, 0, width, height, matrix, false); 

return resizedBitmap; 
}



回答2:


to get the width you should do this :

Display display = getWindowManager().getDefaultDisplay();
double deviceWidth;
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.HONEYCOMB_MR1)
            deviceWidth= display.getWidth();
        else {
            display.getSize(size);
            deviceWidth=size.x;
        }


来源:https://stackoverflow.com/questions/13684947/resize-image-in-android-drawable

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!