http://www.cnblogs.com/GnagWang/archive/2011/06/28/2091980.html

Bitmap的一些操作

1、截取 Bitmap 的部分区域

mBitmap = Bitmap.createBitmap(bmp, 100, 100, 120, 120);

这句代码从 bmp 的 (100,100) 处截取 120*120 像素区域放到新的 Bitmap 中。

2、缩放一个 Bitmap

可以用 Bitmap.createScaledBitmap() 方 法根据给定的 Bitmap 创建 一个新的,缩放后的 Bitmap 。

Bitmap mBitmap = Bitmap.createScaledBitmap(bmp, mScreenWidth, mScreenHeight, true);

其中 mScreenWidth 和 mScreenHeight 是屏幕的宽度和高度,这里就将 bmp 拉伸到整个屏幕。

每次 createBitmap ,都会分配新的内存,带来资源的 消耗,所以用 Bitmap 的 createBitmap 虽然简单方便,但是不是最优方 法。介绍一个比较好点的方法,不用创建新的 Bitmap ,用 Canvas 在画的时候直接缩放或者剪切。

canvas.drawBitmap(mBitmap, null, new Rect(0, 0, 200, 200), null);

这里的 Rect 对象表示一个矩形区域,从 (0,0) 到 (200,200) 之间的矩形区域。这段代码将把 mBitmap 缩放并绘制到屏幕上的(0,0) 到 (200,200) 之间的区域。这个方法还有第二个参数我给的是 null ,其实这个参数也是个 Rect 对象,表示源 Rect 。把图片的某个区域拿出来画到屏幕的指定区域,

canvas.drawBitmap(mBitmap, new Rect(100, 100, 300, 300), new Rect(100, 100, 200, 200), null);

这里将 mBitmap 的 (100,100) 到 (300,300) 区域拿出来,自动缩放并画到屏幕的 (100,100) 到 (200,200) 区域。

3、图片平均分割方法,将大图平均分割为N行N列,方便用户使用

/*** 
* 图片分割 

* @param g 
* :画布

* @param paint 
* :画笔

* @param imgBit 
* :图片

* @param x 
* :X轴起点坐标

* @param y 
* :Y轴起点坐标

* @param w 
* :单一图片的宽度

* @param h 
* :单一图片的高度

* @param line 
* :第几列

* @param row 
* :第几行

*/

public final void cuteImage(Canvas g, Paint paint, Bitmap imgBit, int x, 
int y, int w, int h, int line, int row) { 
g.clipRect(x, y, x + w, h + y); 
g.drawBitmap(imgBit, x – line * w, y – row * h, paint); 
g.restore(); 
}

4、图片缩放,对当前图片进行缩放处理

/*** 
* 图片的缩放方法 
*

* @param bgimage 
* :源图片资源

* @param newWidth 
* :缩放后宽度 
* @param newHeight

* :缩放后高度 
* @return

*/

public Bitmap zoomImage(Bitmap bgimage, int newWidth, int newHeight) {

// 获取这个图片的宽和高

int width = bgimage.getWidth(); 
int height = bgimage.getHeight();

// 创建操作图片用的matrix对象

Matrix matrix = new Matrix();

// 计算缩放率,新尺寸除原始尺寸

float scaleWidth = ((float) newWidth) / width; 
float scaleHeight = ((float) newHeight) / height;

// 缩放图片动作

matrix.postScale(scaleWidth, scaleHeight); 
Bitmap bitmap = Bitmap.createBitmap(bgimage, 0, 0, width, height, 
matrix, true); 
return bitmap;

}

5、绘制带有边框的文字,一般在游戏中起文字的美化作用

/***

* 绘制带有边框的文字 

* @param strMsg 
* :绘制内容 
* @param g 
* :画布

* @param paint 
* :画笔

* @param setx 
* ::X轴起始坐标

* @param sety 
* :Y轴的起始坐标

* @param fg 
* :前景色

* @param bg 
* :背景色

*/

public void drawText(String strMsg, Canvas g, Paint paint, int setx, 
int sety, int fg, int bg) { 
paint.setColor(bg); 
g.drawText(strMsg, setx + 1, sety, paint); 
g.drawText(strMsg, setx, sety – 1, paint); 
g.drawText(strMsg, setx, sety + 1, paint); 
g.drawText(strMsg, setx – 1, sety, paint); 
paint.setColor(fg); 
g.drawText(strMsg, setx, sety, paint); 
g.restore();

}

6、Android 图片透明度处理代码

/** 
* 图片透明度处理 

* @param sourceImg 
* 原始图片 
* @param number 
* 透明度 
* @return 
*/ 
public static Bitmap setAlpha(Bitmap sourceImg, int number) { 
int[] argb = new int[sourceImg.getWidth() * sourceImg.getHeight()]; 
sourceImg.getPixels(argb, 0, sourceImg.getWidth(), 0, 0,sourceImg.getWidth(), sourceImg.getHeight());// 获得图片的ARGB值 
number = number * 255 / 100; 
for (int i = 0; i < argb.length; i++) { 
argb = (number << 24) | (argb & 0×00FFFFFF);// 修改最高2位的值 

sourceImg = Bitmap.createBitmap(argb, sourceImg.getWidth(), sourceImg.getHeight(), Config.ARGB_8888);

return sourceImg; 
}

7、图片翻转

Resources res = this.getContext().getResources(); 
img = BitmapFactory.decodeResource(res, R.drawable.slogo); 
Matrix matrix = new Matrix(); 
matrix.postRotate(90); /*翻转90度*/ 
int width = img.getWidth(); 
int height = img.getHeight(); 
r_img = Bitmap.createBitmap(img, 0, 0, width, height, matrix, true);

图片绘制适应屏幕处理的一些思路相关推荐

  1. 利用js获取滚动条滚动距离,实现图片固定在屏幕的某个位置

    利用js获取滚动条滚动距离,实现图片固定在屏幕的某个位置 思路: 1.获取对象距离顶部和左侧的距离: 2.获取元素对象: 3.当滚动条滚动时获取滚动条滚动的距离: 4.滚动条滚动时执行函数:对象距离顶 ...

  2. 如何在python中显示电脑中的图片-python如何实现多个图片显示在屏幕上?

    pygame的三个方法(屏幕上显示需要的图片) yuhu102319582018-12-16 python将多幅图片显示在一张图片上 wugui1111116282018-06-15 iOS 图片显示 ...

  3. 小程序mpvue图片绘制水印_开发笔记:使用 mpvue 开发斗图小程序

    之前用过 wepy 框架写了个小程序 GitHub - yshkk/shanbay-mina: 基于 wepy 框架的 "扇贝阅读" 微信小程序 ,感觉写法上类似 vue,但不那么 ...

  4. #翻译#将像素绘制到屏幕上

    2019独角兽企业重金招聘Python工程师标准>>> 一个像素是怎么映射到屏幕上去的?有许多种方式将一些事物映射到显示屏,他们需要不同的框架和许多功能和方法的结合体.这里我们走马观 ...

  5. 绘制几何图形,生成辅助线的思路

    目录 辅助线的概念 绘制线规则 捕捉辅助线的思路 生成辅助线的思路 总结 在实际绘制几何图形过程时,有几个工具比较实用: 鼠标绘制时,焦点捕捉已绘制图形的端点.线段上: 撤销与回退 辅助线 焦点捕捉的 ...

  6. python中图片绘制和输出相关库的原理详解

    Python在图片绘制和输出方面的发展历史可以追溯到20世纪90年代,当时的主要库是Python Imaging Library (PIL),用于处理图像文件和生成图像.PIL是Python中最早的图 ...

  7. objc.io 3.1 图像是怎样绘制到屏幕的 (转)

    一个像素是如何绘制到屏幕上去的?有很多种方式将一些东西映射到显示屏上,他们需要调用不同的框架.许多功能和方法的结合体.这里我们大概的看一下屏幕之后发生的事情.当你想要弄清楚什么时候.怎么去查明并解决问 ...

  8. 将像素绘制到屏幕上去

    今天把WordPress搭建好了,想用Django搭建的,还是没能实现,把之前翻译的一篇文章拿出来校对了一下,欢迎评阅. ##########我是正文########## 一个像素是怎样绘制到屏幕上去 ...

  9. 图像绘制到屏幕上的原理。

    转载文章: 文章原地址:http://objccn.io/issue-3-1/ 一个像素是如何绘制到屏幕上去的?有很多种方式将一些东西映射到显示屏上,他们需要调用不同的框架.许多功能和方法的结合体.这 ...

最新文章

  1. Java 程序员都该懂的 HashMap
  2. Xamarin 2017.9.13发布更新
  3. 安卓USB开发教程 五 安卓 AOA 1.0
  4. 以张鸿蒙系统的手机,搭载鸿蒙系统的手机真的要来了?因为别无选择,所以唯有向前!...
  5. 信息学奥赛一本通 1028:字符菱形 | OpenJudge NOI 1.1 09
  6. python 报ImportError: Install xlrd = 1.0.0 for Excel support错误出现及其解决帮法
  7. 【codevs1166】【noip07TG】矩阵取数游戏,新的开始
  8. @程序员,代码清理有必要吗?
  9. 【ZOJ4110】Strings in the Pocket (马拉车算法+分析)
  10. 泛微e9隐藏明细表_泛微Ecology权限整理大全,相当全要点
  11. 小米平板2 android6,小米平板2终于来了MIUI7/Win10双系统
  12. 强弱类型,动态静态语言比较(JAVA,C,C++,Python,Ruby,PHP,Perl)
  13. [GAN学习笔记] 基础GAN(三)——WGAN
  14. 为SSD编程(6):总结—每个程序员都应该了解的关于固态硬盘的知识
  15. Oracle中如何添加date类型的数据
  16. 【阿里云仓库 可用 2022】IDEA MAVEN setings.xml 配置
  17. 数据结构算法题:回文数的实现
  18. 每日学术速递1.29
  19. CMS内容管理系统之文章信息模块的实现
  20. 【Spark ML】第 1 章:机器学习简介

热门文章

  1. 思科交换机备份文件到服务器,CISCO交换机备份和恢复配置文件的方法
  2. 【Linux命令】挂盘相关命令,包含可扩展硬盘
  3. 摸个鱼(算最大捕捞量)
  4. Python语言程序设计 - 北京理工大学 网课所有资料(源码,pdf,ppt课件,视频等)
  5. 编写一个简单Java程序,计算银行年存款的本息
  6. 国企的面试我们应该怎么准备?
  7. onepunch的wp
  8. 百度 ping php,百度ping方法示例代码 自动ping百度
  9. Bug[2] TCP先连接一个错误IP,再次连接会出现连接不上并且报 ALREADY OPENED的提示
  10. 操作系统学习笔记(二十八)~文件系统+连续分配+链接分配+索引分配+空闲空间管理