热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Bitmap的基本使用

1、Drawable→Bitmap?

1、Drawable → Bitmap

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public  static  Bitmap drawableToBitmap(Drawable drawable) {
 
Bitmap bitmap = Bitmap
 
.createBitmap(
 
drawable.getIntrinsicWidth(),
 
drawable.getIntrinsicHeight(),
 
drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
 
: Bitmap.Config.RGB_565);
 
Canvas canvas =  new  Canvas(bitmap);
 
// canvas.setBitmap(bitmap);
 
drawable.setBounds( 0 0 , drawable.getIntrinsicWidth(),
 
drawable.getIntrinsicHeight());
 
drawable.draw(canvas);
 
return  bitmap;
 
}

2、从资源中获取Bitmap

?
1
2
3
Resources res=getResources();
 
Bitmap bmp=BitmapFactory.decodeResource(res, R.drawable.pic);
3、Bitmap → byte[]
?
1
2
3
4
5
6
7
8
9
private  byte [] Bitmap2Bytes(Bitmap bm){
 
ByteArrayOutputStream baos =  new  ByteArrayOutputStream();
 
bm.compress(Bitmap.CompressFormat.PNG,  100 , baos);
 
return  baos.toByteArray();
 
}

4、byte[] → Bitmap

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private  Bitmap Bytes2Bimap( byte [] b){
 
if (b.length!= 0 ){
 
return  BitmapFactory.decodeByteArray(b,  0 , b.length);
 
}
 
else  {
 
return  null ;
 
}
 
}
5、保存bitmap

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
static  boolean  saveBitmap2file(Bitmap bmp,String filename){
 
CompressFormat format= Bitmap.CompressFormat.JPEG;
 
int  quality =  100 ;
 
OutputStream stream =  null ;
 
try  {
 
stream =  new  FileOutputStream( "/sdcard/"  + filename);
 
catch  (FileNotFoundException e) {
 
// TODO Auto-generated catch block
 
Generated by Foxit PDF Creator © Foxit Software
 
http: //www.foxitsoftware.com For evaluation only.
 
e.printStackTrace();
 
}
 
return  bmp.compress(format, quality, stream);
 
}

6、将图片按自己的要求缩放

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// 图片源
 
Bitmap bm = BitmapFactory.decodeStream(getResources()
 
.openRawResource(R.drawable.dog));
 
// 获得图片的宽高
 
int  width = bm.getWidth();
 
int  height = bm.getHeight();
 
// 设置想要的大小
 
int  newWidth =  320 ;
 
int  newHeight =  480 ;
 
// 计算缩放比例
 
float  scaleWidth = (( float ) newWidth) / width;
 
float  scaleHeight = (( float ) newHeight) / height;
 
// 取得想要缩放的matrix参数
 
Matrix matrix =  new  Matrix();
 
matrix.postScale(scaleWidth, scaleHeight);
 
// 得到新的图片
 
Bitmap newbm = Bitmap.createBitmap(bm,  0 0 , width, height, matrix,
 
true );
 
// 放在画布上
 
canvas.drawBitmap(newbm,  0 0 , paint);

7:File图片转Bitmap

?
1
Bitmap bt = BitmapFactory.decodeFile( "/sdcard/myImage/"  "head.jpg" ); //图片地址

8://图片转Bitmap

?
1
2
3
4
5
6
7
8
9
public  Bitmap drawableToBitamp( int  drawableResource) { "white-space:pre" >    //可以取raw里面的资源
         BitmapFactory.Options opt =  new  BitmapFactory.Options();
         opt.inPreferredCOnfig= Bitmap.Config.RGB_565;
         opt.inPurgeable =  true ;
         opt.inInputShareable =  true ;
         InputStream is =  this .getResources().openRawResource(drawableResource);
         BitmapFactory.decodeStream(is,  null , opt);
         return  BitmapFactory.decodeStream(is,  null , opt);
     }


来源: http://www.2cto.com/kf/201408/327978.html


推荐阅读
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 本文讨论了Kotlin中扩展函数的一些惯用用法以及其合理性。作者认为在某些情况下,定义扩展函数没有意义,但官方的编码约定支持这种方式。文章还介绍了在类之外定义扩展函数的具体用法,并讨论了避免使用扩展函数的边缘情况。作者提出了对于扩展函数的合理性的质疑,并给出了自己的反驳。最后,文章强调了在编写Kotlin代码时可以自由地使用扩展函数的重要性。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • Spring学习(4):Spring管理对象之间的关联关系
    本文是关于Spring学习的第四篇文章,讲述了Spring框架中管理对象之间的关联关系。文章介绍了MessageService类和MessagePrinter类的实现,并解释了它们之间的关联关系。通过学习本文,读者可以了解Spring框架中对象之间的关联关系的概念和实现方式。 ... [详细]
author-avatar
手机用户250285627
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有