Android获取图片固定大小的缩略图.docVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Android获取图片固定大小的缩略图

在开发图片浏览器等软件是,很多时候要显示图片的缩略图,而一般情况下,我们要将图片按照固定大小取缩略图,一般取缩略图的方法是使用BitmapFactory的decodeFile方法,然后通过传递进去 BitmapFactory.Option类型的参数进行取缩略图,在Option中,属性值inSampleSize表示缩略图大小为原始图片大小的几分之一,即如果这个值为2,则取出的缩略图的宽和高都是原始图片的1/2,图片大小就为原始大小的1/4。 然而,如果我们想取固定大小的缩略图就比较困难了,比如,我们想将不同大小的图片去出来的缩略图高度都为200px,而且要保证图片不失真,那怎么办?我们总不能将原始图片加载到内存中再进行缩放处理吧,要知道在移动开发中,内存是相当宝贵的,而且一张100K的图片,加载完所占用的内存何止 100K 经过研究,发现,Options中有个属性inJustDecodeBounds,研究了一下,终于明白是什么意思了,SDK中的E文是这么说的 If set to true, the decoder will return null no bitmap , but the out... fields will still be set, allowing the caller to query the bitmap without having to allocate the memory for its pixels. 哦,明白了,那么相应的方法也就出来了,通过设置inJustDecodeBounds为true,获取到outHeight 图片原始高度 和 outWidth 图片的原始宽度 ,然后计算一个inSampleSize 缩放值 ,然后就可以取图片了,这里要注意的是,inSampleSize 可能小于1,必须做判断,同时由于inSampleSize为Int类型,而图片的高度和宽度也为int类型,通过精度的转换,可能会存在失真的问题,那么,我这样进行那个判断 实例代码中为取高度为200PX的缩略图 Java代码 int?be? ?options.outHeight?/?20;//应该直接除200的,但这里出20是为了增加一位数的精度 if be%10?! 0 be+ 10;?//尽量取大点图片,否则会模糊 be be/10; if? be? ?0 ?//判断200是否超过原始图片高度 be? ?1;?//如果超过,则不进行缩放 options.inSampleSize? ?be; int be options.outHeight / 20;//应该直接除200的,但这里出20是为了增加一位数的精度   if be%10 ! 0 be+ 10; //尽量取大点图片,否则会模糊   be be/10;   if be 0 //判断200是否超过原始图片高度   be 1; //如果超过,则不进行缩放   options.inSampleSize be; 整体代码如下 Java代码 BitmapFactory.Options?options? ?new?BitmapFactory.Options ; //options.inSampleSize? ?3; options.outHeight? ?200; options.inJustDecodeBounds? ?true; //options. if? position? ?0 position? ?position?+?mImageDirs.size ; //?获取这个图片的宽和高 Bitmap?bm? ?BitmapFactory.decodeFile this.mImageDirs .get position?%?mImageDirs.size ,?options ;?//此时返回bm为空 options.inJustDecodeBounds? ?false; int?be? ?options.outHeight?/?20; if be%10?! 0 be+ 10; be be/10; if? be? ?0 be? ?1; options.inSampleSize? ?be; bm? ?BitmapFactory.decodeFile this.mImageDirs.get position %?mImageDirs.size ,?options ; int?w? ?bm.getWidth ; int?h? ?bm.getHeight ; w? ?w?*200?/h; i.setImageBitmap bm ;?

文档评论(0)

peain + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档