您的位置:首页 > 移动开发 > Android开发

android将给定图片维持宽高比缩放后,截取正中间的正方形部分

2012-09-07 15:35 555 查看
/**

* 将给定图片维持宽高比缩放后,截取正中间的正方形部分。

* @param bitmap 原图

* @param edgeLength 希望得到的正方形部分的边长

* @return 缩放截取正中部分后的位图。

*/

public static Bitmap centerSquareScaleBitmap(Bitmap bitmap, int edgeLength)

{

if(null == bitmap || edgeLength <= 0)

{

return null;

}



Bitmap result = bitmap;

int widthOrg = bitmap.getWidth();

int heightOrg = bitmap.getHeight();



if(widthOrg > edgeLength && heightOrg > edgeLength)

{

//压缩到一个最小长度是edgeLength的bitmap

int longerEdge = (int)(edgeLength * Math.max(widthOrg, heightOrg) / Math.min(widthOrg, heightOrg));

int scaledWidth = widthOrg > heightOrg ? longerEdge : edgeLength;

int scaledHeight = widthOrg > heightOrg ? edgeLength : longerEdge;

Bitmap scaledBitmap;



try{

scaledBitmap = Bitmap.createScaledBitmap(bitmap, scaledWidth, scaledHeight, true);

}

catch(Exception e){

return null;

}



//从图中截取正中间的正方形部分。

int xTopLeft = (scaledWidth - edgeLength) / 2;

int yTopLeft = (scaledHeight - edgeLength) / 2;



try{

result = Bitmap.createBitmap(scaledBitmap, xTopLeft, yTopLeft, edgeLength, edgeLength);

scaledBitmap.recycle();

}

catch(Exception e){

return null;

}

}



return result;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: