用况:
有时候我们需要设置一个头像,需要在一张拍照或者相册中的图片里截取一个区域另存为一张图片,用做头像显示
提供一个demo
可选择拍照或者选择相册图片
我这里选择了一张相册里的图片,主要是跳转到ClipActivity,选择好裁剪的区域后,点击确认,调用ClipImageLayout的clip方法即可。
我这里会把裁剪完的图片保存到一个临时文件,然后根据路径显示出来,你们可以根据自己的需要用做上传或者其他缓存处理。
其中
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN)
以防止不同手机的通知栏高度会影响判断裁剪区域是否超出图片范围的准确性;
并且,裁剪界面是将选择的图片转换为bitmap进行显示的,如果资源过大,会导致内存溢出,所以还需要进行一步压缩:
Bitmap bitmap=ImageTools.convertToBitmap(path, 600,600);
另:如若想改为裁剪方形头像,则可将裁剪界面裁剪区域边框改为正方形即可:
//方形边框
// canvas.drawRect(mHorizontalPadding, mVerticalPadding, getWidth()- mHorizontalPadding, getHeight() - mVerticalPadding, mPaint);
//圆形边框
canvas.drawCircle( getWidth()/2, getHeight()/2, getWidth()/2-mHorizontalPadding, mPaint);