首页 > 代码库 > 使用Bitmap createBitmap遇到的问题
使用Bitmap createBitmap遇到的问题
public static Bitmap createBitmap(Bitmap source, int x, int y, int width, int height,
Matrix m, boolean filter)
在使用这个方法进行图片缩放裁剪时,x,y的意思理解错误,导致结果不是我想要的效果。
这里的x,y的值在源代码中有说明,但是我没有注意,应该是获取源bitmap中的坐标。
还有x+width要小于或等于source.getWidth(),y+height要小于或等于source.getHeight()
/** * 按宽/高缩放图片到指定大小并进行裁剪得到中间部分图片 * * @param bitmap 源bitmap * @param w 缩放后指定的宽度 * @param h 缩放后指定的高度 * @return 缩放后的中间部分图片 */ public static Bitmap zoomBitmap(Bitmap bitmap, int w, int h) { int width = bitmap.getWidth(); int height = bitmap.getHeight(); float scaleWidht, scaleHeight, x, y; Bitmap newbmp; Matrix matrix = new Matrix(); if (width > height) { scaleWidht = ((float) h / height); scaleHeight = ((float) h / height); x = (width - w * height / h) / 2;//获取bitmap源文件中x做表需要偏移的像数大小 y = 0; } else if (width < height) { scaleWidht = ((float) w / width); scaleHeight = ((float) w / width); x = 0; y = (height - h * width / w) / 2;//获取bitmap源文件中y做表需要偏移的像数大小 } else { scaleWidht = ((float) w / width); scaleHeight = ((float) w / width); x = 0; y = 0; } matrix.postScale(scaleWidht, scaleHeight); try { newbmp = Bitmap.createBitmap(bitmap, (int) x, (int) y, (int) (width - x), (int) (height - y), matrix, true);//createBitmap()方法中定义的参数x+width要小于或等于bitmap.getWidth(),y+height要小于或等于bitmap.getHeight() } catch (Exception e) { e.printStackTrace(); return null; } return newbmp; }
使用Bitmap createBitmap遇到的问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。