对图片进行特效处理

##对图片进行特效处理(熟悉)

* 首先定义一个矩阵对象

Matrix mt = new Matrix();

* 缩放效果

//x轴缩放1倍,y轴缩放0.5倍

mt.setScale(1, 0.5f);

* 旋转效果

//以copyBm.getWidth() / 2, copyBm.getHeight() / 2点为轴点,顺时旋转30度

mt.setRotate(30, copyBm.getWidth() / 2, copyBm.getHeight() / 2);

* 平移

//x轴坐标+10,y轴坐标+20

mt.setTranslate(10, 20);

* 镜面

//把X坐标都变成负数

mt.setScale(-1, 1);

//图片整体向右移

mt.postTranslate(copyBm.getWidth(), 0);

* 倒影

//把Y坐标都变成负数

mt.setScale(1, -1);

//图片整体向下移

mt.postTranslate(0, copyBm.getHeight());

部分代码:

//加载原图

Bitmap bmSrc = BitmapFactory.decodeResource(getResources(), R.drawable.photo3);

//创建副本

//1.创建与原图一模一样大小的bitmap对象,该对象中目前是没有内容的,可以比喻为创建了和原图一样大小的白纸

Bitmap bmCopy = Bitmap.createBitmap(bmSrc.getWidth(), bmSrc.getHeight(), bmSrc.getConfig());

//2.创建画笔对象

Paint paint = new Paint();

//3.创建画板,把白纸铺到画板上

Canvas canvas = new Canvas(bmCopy);

Matrix mt = new Matrix();

//平移效果,指定平移距离

// mt.setTranslate(20, 10);

//缩放效果,指定缩放比例

// mt.setScale(2, 0.5f, bmCopy.getWidth() / 2, bmCopy.getHeight() / 2);

//旋转效果

// mt.setRotate(45, bmCopy.getWidth() / 2, bmCopy.getHeight() / 2);

//镜面效果

// mt.setScale(-1, 1);

// mt.postTranslate(bmCopy.getWidth(), 0);

//倒影效果

mt.setScale(1, -1);

mt.postTranslate(0, bmCopy.getHeight());

canvas.drawBitmap(bmSrc, mt, paint);

ImageView iv_src = (ImageView) findViewById(R.id.iv_src);

iv_src.setImageBitmap(bmSrc);

ImageView iv_copy = (ImageView) findViewById(R.id.iv_copy);

iv_copy.setImageBitmap(bmCopy);

时间: 2024-12-14 13:02:35

对图片进行特效处理的相关文章

10.多媒体

通知 通知(Notification)是 Android系统中比较有特色的一个功能,当某个应用程序希望向用户发出一些提示信息,而该应用程序又不在前台运行时,就可以借助通知来实现.发出一条通知后,手机最上方的状态栏中会显示一个通知的图标,下拉状态栏后可以看到通知的详细内容. 通知的基本用法 通知的用法比较灵活,既可以在活动里创建,也可以在广播接收器里创建,当然还可以服务里创建.相比于广播接收器和服务,在活动里创建通知的场景还是比较少的,因为一般只有当程序进入到后台的时候才需要使用通知. publi

Android基础总结(九)

多媒体概念(了解) 文字.图片.音频.视频 计算机图片大小的计算(掌握) 图片大小 = 图片的总像素 * 每个像素占用的大小 单色图:每个像素占用1/8个字节 16色图:每个像素占用1/2个字节 256色图:每个像素占用1个字节 24位图:每个像素占用3个字节 加载大图片到内存(掌握) Android系统以ARGB表示每个像素,所以每个像素占用4个字节,很容易内存溢出 对图片进行缩放(掌握) 获取屏幕宽高 Display dp = getWindowManager().getDefaultDis

安德鲁斯----多媒体编程

多媒体概念 写作.图画.音频.视频 计算计算机图像尺寸 图像大小 = 图像总像素 * 每个像素的大小占据 单色图:每一个像素占用1/8个字节 16色图:每一个像素占用1/2个字节 256色图:每一个像素占用1个字节 24位图:每一个像素占用3个字节 载入大图片到内存 Android系统以ARGB表示每一个像素,所以每一个像素占用4个字节,非常easy内存溢出 对图片进行缩放 获取屏幕宽高 Display dp = getWindowManager().getDefaultDisplay(); i

Android基础知识:Day09 多媒体编程

Day09 多媒体编程 一.对话框 1. 确定取消对话框 创建对话框构建器对象,类似工厂模式 AlertDialog.Builder builder = new Builder(this); 设置标题和正文 builder.setTitle("警告"); builder.setMessage("若练此功,必先自宫"); 设置确定和取消按钮 builder.setPositiveButton("现在自宫", new OnClickListener(

Android初级教程理论知识(第九章多媒体编程)

多媒体概念 文字.图片.音频.视频 计算机图片大小的计算 图片大小 = 图片的总像素 * 每个像素占用的大小 单色图:每个像素占用1/8个字节 16色图:每个像素占用1/2个字节 256色图:每个像素占用1个字节 24位图:每个像素占用3个字节 加载大图片到内存 Android系统以ARGB表示每个像素,所以每个像素占用4个字节,很容易内存溢出 对图片进行缩放 获取手机屏幕宽高(分辨率) Display dp = getWindowManager().getDefaultDisplay(); i

arpg网页游戏特效播放(一)

网页游戏中的特效,主要包括:场景特效,攻击特效和UI特效三种.场景特效是在地图层上播放的特效,攻击特效主要是技能触发的一些特效,UI特效是面板上的一些特效,还有一些在人物身上播放的特效,例如脚底光圈特效等.特效的播放方式有两种,一种是直接播放swf,二种是根据图片序列,直接绘画到Bitmap上,对于两种方式,我比较倾向于直接绘画到Bitmap上.一般我们我们处理程序的逻辑是,显示和逻辑分开.对于特效显示逻辑,就是特效的绘画逻辑,以及资源的整理方式,逻辑就是特效的播放位置和播放时机不一样而已.所以

Android 3D滑动菜单完全解析,实现推拉门式的立体特效

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/10471245 在上一篇文章中,我们学习了Camera的基本用法,并借助它们编写了一个例子,实现了类似于API Demos里的图片中轴旋转功能.不过那个例子的核心代码是来自于API Demos中带有的Rotate3dAnimation这个类,是它帮助我们完成了所有的三维旋转操作,所有Matrix和Camera相关的代码也是封装在这个类中. 这样说来的话,大家心里会不会痒痒的呢?虽然

【OpenGL】Shader实例分析(九)- AngryBots中的主角受伤特效

转发请保持地址:http://blog.csdn.net/stalendp/article/details/40859441 AngryBots是Unity官方的一个非常棒的样例.非常有研究价值. 曾经研究的时候.因为其内容丰富,一时间不知道从哪入手写文章分析. 这一段时间研究shader技术比較多一些,就从shader的这一方面開始吧.首先分析当中的一个屏幕特效:当主角受到攻击时会出现的全屏效果(postScreenEffect).效果例如以下: 事实上这是一种的Bloom效果,相关文件有:M

Windows Store App 旋转特效

使用Projection类可以实现界面元素的三维效果,它可以使界面上的元素在三维空间中沿着X轴.Y轴或者Z轴旋转一定的角度,在透视转换中此类又称为元素的Projection属性,用于对元素使用3D特效,Projection属性中包含一个PlaneProjection元素,用于声明3D特效,即声明元素在三维空间中的呈现方式.下面通过一个示例演示3D特效带来的视觉体验. 启动Visual Studio 2012,新建一个Windows应用商店的空白应用程序项目,将其命名为3DAnimationApp