`
chen592969029
  • 浏览: 110214 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Android下利用Bitmap切割图片

阅读更多
    在自己自定义的一个组件中由于需要用图片显示数字编号,而当前图片就只有一张,上面有0-9是个数字,于是不得不考虑将其中一个个的数字切割下来,需要显示什么数字,只需要组合一下就好了。
    下面是程序的关键代码:
    在MyView(继承于View)类中的重写的onDraw(Canvas canvas)方法中,有如下代码段:
Bitmap resource = BitmapFactory.decodeResource(this.getResources(), R.drawable.num);
		Bitmap zero = Bitmap.createBitmap(resource, 0, 0, 12, 12);
		Bitmap one = Bitmap.createBitmap(resource, 12, 0, 12, 12);
		Bitmap two = Bitmap.createBitmap(resource, 24, 0, 12, 12);
		Bitmap three = Bitmap.createBitmap(resource, 36, 0, 12, 12);
		Bitmap four = Bitmap.createBitmap(resource, 48, 0, 12, 12);
		Bitmap five = Bitmap.createBitmap(resource, 60, 0, 12, 12);
		Bitmap six = Bitmap.createBitmap(resource, 72, 0, 12, 12);
		Bitmap seven = Bitmap.createBitmap(resource, 84, 0, 12, 12);
		Bitmap eight = Bitmap.createBitmap(resource, 96, 0, 12, 12);
		Bitmap nine = Bitmap.createBitmap(resource, 108, 0, 12, 12);

    其中R.drawable.num为数字图片,每个数字占据的像素为12*12,Bitmap.createBitmap方法中的五个参数意义分别为:需要切割的图片资源、切割起始点的X坐标、切割起始点的Y坐标、切割多宽、切割多高。
    切割下来之后就非常简单的就可以显示各种数字了,例如:用String类型的number表示需要显示的数字,则
char nums[] = number.toCharArray();
		for(int i = 0; i < nums.length; i ++) {
			if(nums[i] == '0') {
				canvas.drawBitmap(zero, i * 12, 0, mPaint);
			} else if(nums[i] == '1') {
				canvas.drawBitmap(one, i * 12, 0, mPaint);
			} else if(nums[i] == '2') {
				canvas.drawBitmap(two, i * 12, 0, mPaint);
			} else if(nums[i] == '3') {
				canvas.drawBitmap(three, i * 12, 0, mPaint);
			} else if(nums[i] == '4') {
				canvas.drawBitmap(four, i * 12, 0, mPaint);
			} else if(nums[i] == '5') {
				canvas.drawBitmap(five, i * 12, 0, mPaint);
			} else if(nums[i] == '6') {
				canvas.drawBitmap(six, i * 12, 0, mPaint);
			} else if(nums[i] == '7') {
				canvas.drawBitmap(seven, i * 12, 0, mPaint);
			} else if(nums[i] == '8') {
				canvas.drawBitmap(eight, i * 12, 0, mPaint);
			} else if(nums[i] == '9') {
				canvas.drawBitmap(nine, i * 12, 0, mPaint);
			}
		}

    其中canvas为画布,drawBitmap方法中的四个参数的意义分别为:需要绘制的图片资源、在画布上绘制的起始点的X坐标、Y坐标、画笔。其中画笔在此处可以不进行任何设置,只需new一个出来即可,Paint mPaint = new Paint();
分享到:
评论
4 楼 liz239 2013-01-05  
不错~ 
3 楼 weiyage 2012-03-06  
谢谢 学习了,可以用来做百叶窗了
2 楼 WH_Always 2011-09-29  
最近在学习bitmap,请问lz能给个代码不?非常感谢!!1274214867@qq.com
1 楼 maoning20080808 2011-08-08  
可以给个demo吗??谢谢了。。  976929421@qq.com

相关推荐

    通过将资源库图片转化为Bitmap,使用Zxing库完成多二维码识别

    本文将详细介绍如何在Android环境中,利用Zxing库实现多二维码识别,以及如何将资源库中的图片转化为Bitmap来辅助这一过程。 首先,Zxing(ZXing,读作“zebra crossing”)是一个开源的、跨平台的条码解码库,支持...

    Android-Diagonalify创建对角线切割在图片视图上

    `Diagonalify`库的实现原理主要是通过对ImageView的底层绘图逻辑进行干预,利用Canvas的drawBitmap方法,在绘制图片时添加一个斜向的裁剪路径。裁剪路径通常由Path对象创建,通过设置Path的移动、直线和闭合等方法来...

    bitmap图片处理工具类

    "Bitmap图片处理工具类" 提供了多种对位图(Bitmap)进行操作的功能,如颜色转换、图像分割、缩放、旋转、调整透明度、生成圆角图片以及文字与倒影效果的绘制。接下来,我们将深入探讨这些知识点。 首先,`...

    安卓头像制作图片圆角剪裁相关-android以不规则图片为边框切割另外的图片.rar

    在Android开发中,有时我们需要实现一个功能,即根据不规则的图片作为边框来裁剪其他图片,例如创建带有圆角或特殊形状的头像。这个压缩包中的内容似乎提供了这样的解决方案,允许开发者以不规则的图片(如带有圆角...

    Android中将一个图片切割成多个图片的实现方法

    在这个场景中,我们将利用Bitmap的`createBitmap`方法来切割图片。 `createBitmap`方法允许我们从现有Bitmap对象中创建一个新的Bitmap,指定新Bitmap的起始位置(x, y)以及宽度和高度。这正是切割图片的关键。在...

    Android-Android加载大图可以高清显示10000*10000像素的图片轻松实现微博长图功能

    在Android开发中,处理大图是一项挑战,尤其是像10000*10000像素这样的超大尺寸图片。这些图片如果直接在内存中加载,可能导致OOM(Out of Memory)异常,严重影响应用的性能和稳定性。为了解决这个问题,开发者需要...

    ANDROID下的拼图源码

    这涉及到位图操作,可能使用Bitmap类来加载、裁剪和保存图片。开发者需要确保图片在不同分辨率的设备上都能正常显示,因此可能需要考虑资源密度(dp和sp单位)和缩放比例。 4. **逻辑编程**: 游戏逻辑包括随机打乱...

    Bitmap转jpeg源码 简化版

    2. 缓存管理:合理利用Bitmap的复用机制,避免频繁创建和销毁Bitmap对象。 3. 质量调整:根据应用场景选择合适的质量,如网络传输可适当降低质量,本地存储则可以设置较高质量。 总结,Bitmap转JPEG的核心在于使用...

    android 具有图片斜切功能的自定义控件

    本篇文章将详细讲解如何在Android中创建一个具有图片斜切功能的自定义控件,该控件是基于ImageView进行扩展的,支持加载本地或网络图片,并可以根据实际需求进行定制化的图片切割。 首先,我们创建一个新的类,继承...

    Android 多线程网络图片下载工具类

    在Android开发中,高效地处理网络图片下载是十分常见的需求,尤其在大数据量或高并发的情况下,多线程网络图片下载能显著提升用户体验。本文将详细介绍如何构建一个Android多线程网络图片下载工具类,包括其核心原理...

    Android-ImageLoaderAndroid图片加载框架的api封装

    2. 分块加载:将大图分割成多个小块,按需加载,只加载当前可视区域的图片部分。 3. 缓存策略:利用合理的缓存策略,将已加载的图片存储在内存或磁盘中,提高加载速度。 4. 懒加载:只在图片进入视口时才开始加载,...

    Android仿微信图片点击浏览的效果

    这里的关键是利用`initTransform()`、`initStartIn()`和`initStartOut()`等方法来计算动画的各个阶段,如缩放、平移和切割。 4. **动画计算**:在动画过程中,我们需要计算图片的缩放比例、平移量以及可能的裁剪...

    android版拼图游戏源码

    在这款游戏中,开发者可能使用了图像处理技术,如Bitmap对象来加载和操作图片,将其切割成多个部分供玩家拼凑。同时,游戏界面的布局和交互设计也是关键,这可能使用了Android的XML布局文件来完成。 接下来,关于...

    android拼图游戏

    在Android平台上开发一款拼图游戏,我们可以利用Android的GridViewer组件和Bitmap图像处理技术来实现。下面我们将详细探讨这些知识点。 首先,`Android GridViewer`是Android SDK提供的一种布局管理器,它允许我们...

    android+opencv边缘检测

    本项目是关于在Android设备上利用OpenCV进行边缘检测的一个示例。 首先,我们需要了解OpenCV的集成过程。在Android Studio中,OpenCV通常作为外部库通过Gradle进行管理。在项目的build.gradle文件中添加依赖,并...

    android 圆形头像显示(选择相册+剪切+拍照)

    1. **圆形头像**:在Android中,显示圆形头像通常涉及到图片的形状变换。我们可以使用BitmapShader类来改变Bitmap的渲染方式,使其以圆形显示。 2. **选择相册**:Android提供了Intent机制,通过ACTION_PICK Intent...

    android拼图小游戏

    这通常通过编程实现,利用Java或Kotlin的图像处理库,如Bitmap类,进行裁剪和保存每一块碎片。同时,为了实现随机打乱碎片的功能,开发者需要编写算法来生成碎片的新排列顺序。 3. **触摸事件处理** 在Android中,...

    Android 仿微信图片选择器

    这个"Android 仿微信图片选择器"项目就是基于这样的需求构建的,它利用了Glide库来实现图片的加载和展示。下面将详细介绍这个项目中的关键知识点。 1. **Android组件与架构**: - **Activity**:作为用户界面的...

    ByteArray-Scale-Bitmap.rar_ByteArray_slice

    9-slice 图片分割成9个部分:左上、右上、中间上、左中、中间、右中、左下、中间下和右下。当图片需要缩放时,这9个部分会独立拉伸,保持角落和边缘的原始比例,防止图像失真。这种方法特别适合于有固定边框或者填充...

Global site tag (gtag.js) - Google Analytics