1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 安卓android按宽/高缩放图片到指定大小并进行裁剪得到中间部分图片

安卓android按宽/高缩放图片到指定大小并进行裁剪得到中间部分图片

时间:2020-12-15 20:23:15

相关推荐

安卓android按宽/高缩放图片到指定大小并进行裁剪得到中间部分图片

/*** 按宽/高缩放图片到指定大小并进行裁剪得到中间部分图片 <br>* 方 法 名:zoomBitmap <br>* 创 建 人:楼翔宇 <br>* 创建时间:-4-7 下午12:02:52 <br>* 修 改 人: <br>* 修改日期: <br>** @param bitmap 源bitmap* @param vw缩放后指定的宽度* @param vh缩放后指定的高度* @return 缩放后的中间部分图片 Bitmap*/public static Bitmap zoomBitmap(Bitmap bitmap, float vw, float vh) {float width = bitmap.getWidth();//获得图片宽高float height = bitmap.getHeight();float scaleWidht, scaleHeight, x, y;//图片缩放倍数以及x,y轴平移位置Bitmap newbmp = null; //新的图片Matrix matrix = new Matrix();//变换矩阵if ((width/height)<=vw/vh){//当宽高比大于所需要尺寸的宽高比时以宽的倍数为缩放倍数scaleWidht = vw / width;scaleHeight = scaleWidht;y = ((height*scaleHeight - vh) / 2)/scaleHeight;// 获取bitmap源文件中y做表需要偏移的像数大小x = 0;}else {scaleWidht = vh / height;scaleHeight = scaleWidht;x = ((width*scaleWidht -vw ) / 2)/scaleWidht;// 获取bitmap源文件中x做表需要偏移的像数大小y = 0;}matrix.postScale(scaleWidht / 1f, scaleHeight / 1f);try {if (width - x > 0 && height - y > 0&&bitmap!=null)//获得新的图片 (原图,x轴起始位置,y轴起始位置,x轴结束位置,Y轴结束位置,缩放矩阵,是否过滤原图)为防止报错取绝对值newbmp = Bitmap.createBitmap(bitmap, (int) Math.abs(x), (int) Math.abs(y), (int) Math.abs(width - x),(int) Math.abs(height - y), matrix, false);// createBitmap()方法中定义的参数x+width要小于或等于bitmap.getWidth(),y+height要小于或等于bitmap.getHeight()} catch (Exception e) {//如果报错则返回原图,不至于为空白e.printStackTrace();return bitmap;}return newbmp;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。