11-

12-

13-android获取图片原始长宽;

=========

11--国内某金融企业的一道面试题:如何在代码中获得一个ImageVIew的高度和宽度?

相信很大一部分人,会直接想到用imageview.getWidth() 和 imageview.getHeight() 来获得,其实不然。

我们可以自己写个程序来跑一下,当我们放置一张图片在imageView中,并且设置了它的高度和宽度,我们不妨在日志控制台输出看一下,

Log.i("MainActivity", "宽度:"+String.valueOf(imageView.getWidth()));
Log.i("MainActivity", "高度:"+String.valueOf(imageView.getHeight()));

输出结果如下:

是不是很恼火呀,结果就是这样。

那么究竟该如何获取图片的高度和宽度呢? 其实,我们可以通过构建一个BItMap对象出来,这个BItMap就是从我们的那种图片资源转换而来,bitmap对象中的getWidth() 和getHeight()可以获得位图的大小,例子:

  1. ImageView imageView = (ImageView)findViewById(R.id.imageView);
  2. Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.newscar);
  3. Log.i("MainActivity", "宽度:"+String.valueOf(bitmap.getWidth()));
  4. Log.i("MainActivity", "高度:"+String.valueOf(bitmap.getHeight()));

这个时候我们再来看一下日志控制台的输出结果:

Ok,第一个问题我们搞定了(注意:这是原图片的大小,不是我们布局文件中设置的大小)。

12--我们看一下如何动态设置图片的高度和宽度,这问题比较简单,我们直接使用LayoutParams的对象来进行设置

代码如下:

    1. ImageView imageView = (ImageView)findViewById(R.id.imageView);
    2. imageView.setImageResource(R.drawable.newscar);
    3. LayoutParams params = imageView.getLayoutParams();
    4. params.height=200;
    5. params.width =100;
    6. imageView.setLayoutParams(params);

13--android获取图片原始长宽

在android里面要要取一张96 x 96像素每个像素点的RGB值然后处理,但是一开始直接读取

  1. Bitmap mBitmap =BitmapFactory.decodeResource(getResources(), R.drawable.jimg001);
  2. int width=opts.outWidth;
  3. int height=opts.outHeight;

这样读出来的值却实变成了144 x 144像素,很无语,对Android接触不多,查看各种资料才发现如果这样写android默认读取的不是原始大小

  1. BitmapFactory.Options opts = new BitmapFactory.Options();
  2. opts.inJustDecodeBounds = true;
  3. BitmapFactory.decodeResource(getResources(), R.drawable.jimg001, opts);
  4. opts.inSampleSize = 1;
  5. opts.inJustDecodeBounds = false;
  6. Bitmap mBitmap =BitmapFactory.decodeResource(getResources(), R.drawable.jimg001, opts);
  7. int width=opts.outWidth;
  8. int height=opts.outHeight;

将BitmapFactory.Options.inSampleSize设为1才是原始大小,有时候根据需要因为图片太大而内存溢出时,需要适当选择inSampleSize的值,可以参考http://hi.baidu.com/liganggang/item/6ab1e480fa2da1e3e596e015

最新文章

  1. 支持“ApplicationDbContext”上下文的模型已在数据库创建后发生更改
  2. Xenocode Postbuild 2010 for .NET 使用说明
  3. 转载:ORA-01438: 值大于为此列指定的允许精度
  4. LTE Module User Documentation(翻译15)——示例程序、参考场景以及故障检测和调试技巧
  5. 树莓派安装kali后的简单配置
  6. C# 制作透明窗体
  7. Java中,&&与&;||与|的区别
  8. 201521123087《Java程序设计》第12周学习总结
  9. Hadoop基础-Hadoop的集群管理之服役和退役
  10. /linux-command-line-bash-shortcut-keys/
  11. python模块:configparser
  12. iptables 代理转发配置
  13. 导出函数__declspec(dllexport)
  14. 1:4 UI标签和通用标签
  15. 解决 windows npm ERR! asyncWrite is not a function 问题
  16. python第二十五课——闭包
  17. Design2:使用HierarchyID构建数据的分层结构
  18. qsort的使用
  19. CentOS安装emacs24.2命令
  20. 超全面的JavaWeb笔记day15<mysql数据库>

热门文章

  1. Android TouchEvent事件传递机制
  2. jQuery - 设置内容和属性
  3. UserDefault的使用,保存小数据到本地-iOS
  4. Object-c 语言
  5. python--类方法、对象方法、静态方法
  6. 04-Java 异常
  7. http://stackoverflow.com/questions/12601907/loading-google-maps-in-anonymous-function
  8. nginx path_info问题解决
  9. android操作sdcard中的多媒体文件(一)——音乐列表的制作
  10. 正在调用的 ServicedComponent 配置不正确(请使用 regsvcs 重新注册)