Android中bitmap的相关处理
加载大图片
Options options=new Options();
options.inJustDecodeBounds=true;//不加载图片,只加载文件信息
//加载图片,获取到配置信息
BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"/a.jpg",options);
int width=options.outWidth;//获取到图片的真是宽度
int height=options.outHeight;//获取到图片的真是的高度
//获取到手机屏幕显示对象
Display display = getWindowManager().getDefaultDisplay();
int h = display.getHeight();//获取屏幕的高度
int w = display.getWidth();//获取到平局的宽度
//计算缩放的比率
int scale=1;
int scaley=width/w;
int scalex=height/h;
if(scalex<1 && scaley<1){ }else{
//如果缩放的宽,大于高,则安照宽的缩放比率,因为高的缩放比率小,那么按照高的缩放比率的话,宽则超出了屏幕的宽
scale=scalex>scaley?scalex:scaley;
} options.inJustDecodeBounds=true;
options.inSampleSize=scale;//指定缩放比率
//根据配置信息,重新生成有一个bitmap对象,这就得到的是缩放之后的图片
Bitmap bitmap = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"/a.jpg",options);
img.setImageBitmap(bitmap); 涂鸦
1、首先加载一个图片Bitmap bitmap = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory() + "/a.jpg");
2.创建一个空的图片,bit = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(),bitmap.getConfig());
3.创建一个画布,Canvas canvas=new Canvas(bit);
4.创建一个画笔 panint paint=new Paint(); paint.setcolor(Color.red);
5.把加载的图片画到画布上 canvas.drawBitmap(bitmap)
6.在图片上设置触摸事件,根据按下和移动的位置开始画线 加水印
和上面的一样,只是加了一句canvas.drawText("饿哦我到底发生", 100,100, paint); 保存图片通知相册扫描该图片 bit.compress(CompressFormat.JPEG, 100, new FileOutputStream(Environment.getExternalStorageDirectory()+"/hdksh.jpg"));
Intent intent=new Intent();
intent.setAction("android.intent.action.MEDIA_MOUNTED");
intent.setData(Uri.fromFile(new File(Environment.getExternalStorageDirectory()+"hdksh.jpg")));
sendBroadcast(intent);//发送广播,通知相册扫描
图片的旋转
Bitmap bitmap=BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"/mm.jpg");
Bitmap bit = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), bitmap.getConfig());
Canvas canvas=new Canvas(bit);
Matrix matrix=new Matrix();
matrix.setRotate(180, bitmap.getWidth()/2, bitmap.getHeight()/2);
Paint paint=new Paint();
paint.setColor(Color.RED);
canvas.drawBitmap(bitmap, matrix, paint);
img.setImageBitmap(bit)
镜面效果
Bitmap bitmap = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"/mm.jpg");
Bitmap bit = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), bitmap.getConfig());
Canvas canvas=new Canvas(bit);
Paint paint=new Paint();
Matrix matrix=new Matrix();
matrix.setScale(-1, 1);//反转
matrix.postTranslate(bitmap.getWidth(), 0);//移动
canvas.drawBitmap(bitmap, matrix, paint);
img.setImageBitmap(bit);
Android中bitmap的相关处理的更多相关文章
- Android中Bitmap, Drawable, Byte,ID之间的转化
Android中Bitmap, Drawable, Byte,ID之间的转化 1. Bitmap 转化为 byte ByteArrayOutputStream out = new ByteArray ...
- android中Bitmap的放大和缩小的方法
android中Bitmap的放大和缩小的方法 时间 2013-06-20 19:02:34 CSDN博客原文 http://blog.csdn.net/ada168855/article/det ...
- Android中WebView的相关使用
近期做的项目中,遇到个非常棘手的问题: 客户给我的数据是有限制的,因此,在返回某条详细页面内容的时候,他仅仅能给我一个html片段,里面包括 文字,图片以及附件的下载地址.假设网页模版规范的爱比較好说 ...
- Android中 Bitmap Drawable Paint的获取、转换以及使用
比如Drawable中有一系列连续的图片,img_0.png, img_1.png, img_2.png ... 如果要动态获取这些图片,通过"R.drawable.img_x"的 ...
- 关于如何避免Android中Bitmap引起的OutOfMemoryError
在Android中处理大图片不是一件很随意的事情,因为通常我们使用的是内置的BitmapFactory解码图片的,而BitmapFactory往往会因为图片过大而遇到OutOfMemoryError的 ...
- Android中Bitmap对象和字节流之间的相互转换
android 将图片内容解析成字节数组,将字节数组转换为ImageView可调用的Bitmap对象,图片缩放,把字节数组保存为一个文件,把Bitmap转Byte import java.io.B ...
- Android中Bitmap对象和字节流之间的相互转换(转)
android 将图片内容解析成字节数组:将字节数组转换为ImageView可调用的Bitmap对象:图片缩放:把字节数组保存为一个文件:把Bitmap转Byte import java.io.Buf ...
- Android中Bitmap和Drawable,等相关内容
一.相关概念 1.Drawable就是一个可画的对象,其可能是一张位图(BitmapDrawable),也可能是一个图形(ShapeDrawable),还有可能是一个图层(LayerDrawable) ...
- Android中图片处理相关问题
在Android的开发中,我们经常回去处理一些图片相关的问题,比如当加载图片到内存中产生的OOM(OutOfMemory)异常.图片加载到内存中占多大内存的问题.jpg png两种常见的图片的原理及区 ...
随机推荐
- 3 Ways to Preload Images with CSS, JavaScript, or Ajax---reference
Preloading images is a great way to improve the user experience. When images are preloaded in the br ...
- android基础篇学习心得
android技术中,线程.进程.JNI.IPC和各个小框架结构是基本功.在跟随高焕堂老师的android程序猿到架构师之路系列视频中 学习完基础篇之后,颇有些心得,记录下来. android开发就是 ...
- Decorator Wrapper 装饰模式 包装
简介 装饰模式 装饰模式以对客户端[透明]的方式[扩展]对象的功能,客户端并不会觉得对象在装饰前和装饰后有什么不同,是继承关系的一个替代方案. 若只为增加功能而使用继承,当基类较多时会导致继承体系越来 ...
- Java POI 导出excel表
1.首先下载poi-3.6-20091214.jar,下载地址如下: http://download.csdn.net/detail/evangel_z/3895051 2.Student.java ...
- Wpf TextChanged事件导致死循环,事件触发循环问题
1.实例: 说明:当TextBox控件的Text内容发生变化时,TextChanged事件触发,并且会立即同步执行. 基于这个特点,设置一个全局变量标识,ChangeTxtB,如果是正在修改txtB的 ...
- Oracle 创建分页存储过程(转帖)
原贴地址:http://19880614.blog.51cto.com/4202939/1316560 ps:源代码还有很多错误,我修改了 ------------------------------ ...
- App Store审核指南(中文版)2010版
前言 感谢您付出宝贵的才华与时间来开发iOS应用程程序.从职业与报酬的角度而言,这对于成千上万的开发员来说一直都是一项值得投入的事业.我们希望帮助您加入这个成功的组织.这是我们首次发布<应用程序 ...
- hello,boke
我一名学习软件工程金融服务工程的学生,简单来说就是学习计算机类的,对于自己的介绍,从平时生活中来说吧,我一直处于一种很中规中矩的生活状态里,平时玩玩手机.追追剧.和室友一起去图书馆自习,考前拼命复习两 ...
- ThinkPHP 的CURD 基本操作
说起CURD,懂点SQL的人都知道,就是增删改查,做业务系统的时候,往往离不开这CURD,最近也是刚刚接触ThinkPHP,ThinkPHP的灵活性是比原生PHP好用的多,下面我就简单的介绍一下我的学 ...
- 【USACO 3.3.2】商品购物
[描述] 在商店中,每一种商品都有一个价格(用整数表示).例如,一朵花的价格是 2 zorkmids (z),而一个花瓶的价格是 5z .为了吸引更多的顾客,商店举行了促销活动. 促销活动把一个或多个 ...