android_画图_图片剪切
来源:互联网 发布:来肯云商软件怎么样 编辑:程序博客网 时间:2024/05/22 15:45
android里面图片剪切常用的一般是调用系统的剪切程序,或者通过createBitmap来设置图片的宽度和高度,返回一个新的bitmap,目前我做的项目需要在储存图片的时候剪切掉图片的底部的一部分区域,用系统的剪切还得调用一下,这样不适合我的要求,通过createBitmap(srcbitmap,x,y,with,height-要剪切的高度或者宽度) 这个方法只能剪切掉图片的上部分,也不符合我的要求,因此我这里采用的是两个图层重叠的方法来实现的,如果各位有什么好的方法,请留言,谢谢!
说到图层重叠就不得不说这个方法:setXfermode ,用法一般是这样的:
Canvas canvas = new Canvas(bitmap1);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(mask, 0f, 0f, paint);
该方法是设置两张图片相交时的模式 ,我们知道 在正常的情况下,在已有的图像(代码中:bitmap1)上绘图将会在其上面添加一层新的形状(代码中:mask)。 如果新的Paint是完全不透明的,那么它将完全遮挡住下面的Paint; 而setXfermode就可以来解决这个问题。
这里我看到网上有篇说怎样裁剪圆角图片的方法,修改了下,活学活用,我的方法如下:
public static Bitmap CutBitmap(Bitmap bitmap, Activity activity) {
final DisplayMetrics dm = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
float densi = dm.density;//屏幕密度
int width = bitmap.getWidth();
int height = bitmap.getHeight();
float roundPx = 0, roundPy = 0;
float dst_left = 0, dst_top = 0, dst_right = 0, dst_bottom = 0;
if (width <= height) {
dst_left = 0;
dst_top = 0;
dst_right = width;
dst_bottom = height - 50*densi;//图片高度-要剪切掉的区域高度
roundPx = 0;
roundPy = 0;
}
Bitmap output = Bitmap.createBitmap(width, height, Config.ARGB_8888);
Canvas canvas = new Canvas(output);
final Paint paint = new Paint();
// src是指要画的图的大小,dst高度或者宽度小于src则不完全显示
// 如果src的宽度、高度小于dst宽度、高度,则图像被拉伸显示
final Rect src = new Rect(0, 0, (int) dst_right, (int) dst_bottom);
final Rect dst = new Rect((int) dst_left, (int) dst_top,
(int) dst_right, (int) height);
final RectF rectF = new RectF(dst);
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);// 透明色
canvas.drawRoundRect(rectF, roundPx, roundPy, paint);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(bitmap, src, dst, paint);
return output;
}
如果有问题可以留言,欢迎指正错误,让我们共同进步!
附效果图:
剪切前的图片:
剪切后的图片:
- android_画图_图片剪切
- android_基础_图片处理_在imageview上画图
- Android_图片处理_高效Bitmap
- Asp.net 函数_上传图片,加水印,图片剪切
- 图片剪切
- 图片剪切
- 图片剪切
- 图片剪切
- android_基础_图片处理-Bitmap的使用
- [Cocoa]_[初级]_[在Cocoa中使用图形上下文设备剪切图片]
- [ATL/WTL]_[中级]_[使用GDIPlus剪切和缩放图片]
- Android_聊天_表情
- 77_游戏项目_加载窗口_画图形_加载图片_编程中坐标基本知识
- 图片剪切 vb.net
- CSS剪切图片
- javascript图片剪切效果
- 仿美图秀秀的图片剪切
- java剪切图片
- IOS Socket 总结 (涉及内容Amr,protobuf,CFSocket)
- CSS 简洁表单布局
- 2012年下半年的无线电合订本光盘资料
- Java中的Set, List, Map漫谈
- Android-获取手机已经安装的程序-推送好友
- android_画图_图片剪切
- Entity Framework Extended Library (EF扩展类库,支持批量更新、删除、合并多个查询等)
- mysql学习(二),用户数据库交互
- Android下使用Properties文件保存程序设置
- Eclipse中Ctrl+Alt+Down和Ctrl+Alt+Up不起作用
- Hadoop集群算法调用--web平台2.0
- Android 自学开发绝对好资料-SDK各包绿色下载
- 2005高中数学联赛第15题补充解答
- 单片机C语言应用100例(第二版)光盘资料 作者王东峰 陈圆圆 郭向阳