本文是自己学习所做笔记,欢迎转载,但请注明出处: http://blog.csdn.net/jesson20121020

在Android的UI开发中经常会遇到图片的缩放,就比如记事本,现在的图片都比较大,如果将原图不经缩放直接放在屏幕上,则会占满整个屏幕,而且有时图片会比屏幕还大,这时就不能完全的显示整个图片,所以,必须要进行缩放,但在缩放时,该如何缩放呢,长和宽的缩放比例设置为多少合适呢,为了保持原图的纵横比,所以要最好的方法就是约束缩放比例,也就是等比例缩放,相信大家都用过PS中的缩放图片的功能,有个选项就是约束缩放比例,也就是保持纵横比,即等比例缩放。

     

缩放前                                                                                 缩放后

等比例的缩放思想很简单,就是在缩放的过程中保持纵横比,代码如下:

        //等比例缩放图片private Bitmap resize(Bitmap bitmap,int S){int imgWidth = bitmap.getWidth();int imgHeight = bitmap.getHeight();double partion = imgWidth*1.0/imgHeight;double sqrtLength = Math.sqrt(partion*partion + 1);//新的缩略图大小double newImgW = S*(partion / sqrtLength);double newImgH = S*(1 / sqrtLength);float scaleW = (float) (newImgW/imgWidth);float scaleH = (float) (newImgH/imgHeight);Matrix mx = new Matrix();//对原图片进行缩放mx.postScale(scaleW, scaleH);bitmap = Bitmap.createBitmap(bitmap, 0, 0, imgWidth, imgHeight, mx, true);return bitmap;}

其中,S是长和宽缩放到的最大像素。

今天再来实现一个给图片添加边框效果,当然了,这里我简单的添加了一个线条边框,也可以用其他好看的边框加在图片上,先看效果图:

其实,给图片加边框的思想,就是在图片的四周绘制一个矩形,代码如下:

        //给图片加边框,并返回边框后的图片public Bitmap getBitmapHuaSeBianKuang(Bitmap bitmap) {float frameSize = 0.2f;Matrix matrix = new Matrix();// 用来做底图Bitmap bitmapbg = Bitmap.createBitmap(bitmap.getWidth(),bitmap.getHeight(), Bitmap.Config.ARGB_8888);// 设置底图为画布Canvas canvas = new Canvas(bitmapbg);canvas.setDrawFilter(new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG| Paint.FILTER_BITMAP_FLAG));float scale_x = (bitmap.getWidth() - 2 * frameSize - 2) * 1f/ (bitmap.getWidth());float scale_y = (bitmap.getHeight() - 2 * frameSize - 2) * 1f/ (bitmap.getHeight());matrix.reset();matrix.postScale(scale_x, scale_y);// 对相片大小处理(减去边框的大小)bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(),bitmap.getHeight(), matrix, true);Paint paint = new Paint();paint.setColor(Color.WHITE);paint.setStrokeWidth(1);paint.setStyle(Style.FILL);// 绘制底图边框canvas.drawRect(new Rect(0, 0, bitmapbg.getWidth(), bitmapbg.getHeight()),paint);// 绘制灰色边框paint.setColor(Color.BLUE);canvas.drawRect(new Rect((int) (frameSize), (int) (frameSize), bitmapbg.getWidth() - (int) (frameSize), bitmapbg.getHeight()- (int) (frameSize)), paint);canvas.drawBitmap(bitmap, frameSize + 1, frameSize + 1, paint);return bitmapbg;}

android项目 之 记事本(12) ----- 图片的等比例缩放及给图片添加边框相关推荐

  1. 微信小程序图片根据屏幕比例缩放

    // 图片根据屏幕比例缩放imageUtil(e) { let self = this,imageSize = {},originalWidth = e.detail.width,//图片原始宽 or ...

  2. VS+Qt应用开发-Qt+Halcon显示图片,实现鼠标缩放、移动图片

    VS+Qt应用开发-Qt+Halcon显示图片,实现鼠标缩放.移动图片 效果展示 界面设计 代码例程 完整代码 CMyLabel.h CMyLabel.cpp BrowsePic.h BrowsePi ...

  3. 如何在使用eclipse的情况下,清理android项目中的冗余class文件和资源文件以及冗余图片...

    在我们迭代项目的过程中,经常会启用某些功能,或者修改某些界面的问题,那么问题来了,这样很容易出现大量的冗余.java文件,冗余资源文件,一些冗余的界面文件等.那么问题既然出现了,那么如何去解决呢,这就 ...

  4. 图片无损压缩 图片无损等比例缩放

    突然接受到一个需求,要将客户的一部分高质量图压缩并且等比例缩放到800px. 尝试很多,遇到两个问题: 1.图片压缩了,14MB大概还有50KB左右,质量差的很,和原图很不一样. 2.图片等比例缩放了 ...

  5. android项目 之 记事本(6)----- 加入手写

    想必大家都用过QQ的白板功能,里面主要有两项,一个是涂鸦功能,事实上类似于上节的画板功能,而还有一个就是手写,那记事本怎么能没有这个功能呢,今天就来为我们的记事本加入手写功能. 先上图,看看效果: 看 ...

  6. Android项目之记事本

    1.需求分析 1)业务需求分析: 近年来,随着生活节奏的加快,工作和生活的双重压力全面侵袭着人们,如何避免忘记工作和生活中的诸多事情而造成不良的后果,就显得非常重要.为此,我们开发了一款基于Andro ...

  7. android记事本 图文存储,android项目 之 记事本(15) ----- 保存手写及绘图

    之前,忘了写如何将手写和绘图保存,现在补上. 首先看如何保存绘图,先看效果图: 因为记事本的绘图功能主要用到了画布,而在构建画布时,指定了Bitmap,也就是说在画布上的所画的东西都被保存在了Bitm ...

  8. Android 根据手机的屏幕的大小设置图片的等比例缩放

    最近用到把一个图片绘制到画布上,然后用画笔做标记,但是获取的是图片的宽和高,这样绘制出来的无法完全匹配成全屏,下面记录一个方法等比例了缩放: /*** * @param bm 传入的bitmap* @ ...

  9. 图片按指定比例缩放并压缩至指定大小,解决保存图片文件体积过大bug。

    需求:服务器指定图片尺寸大小,并且限制图片文件大小,因此在选择图片后需要进行操作,方法如下: 保存图片的时候,会发现实际文件大小大于当前设置的大小,这个问题在最后面解决,先上正确的代码: 1.指定图片 ...

  10. iOS开发点击查看图片详情并可缩放拖拽图片长按图片下载

    由图片缩略图进入查看图片原图页面,并可对图片进行缩放(最小不小于原图,最大不大于三倍原图),长按可保存到本地相册或者查看原图. 1)缩略图页面: 2)点击查看原图页面 代码部分: 1.初始化图片背景跟 ...

最新文章

  1. Opencv 深度学习中为什么普遍使用BGR而不用RGB?
  2. Crypto API 学习笔记一
  3. Java反射学习总结五(Annotation(注解)-基础篇)
  4. JBoss Fuse 6.1 + HawtIO第一部分
  5. HDFS block丢失过多进入安全模式(safe mode)的解决方法
  6. Minecraft 1.12.2MOD Forge开发帮助文档 (持续更新)
  7. android小应用帮美女更衣系列一(附源码)
  8. 深入理解Tomcat 6和Tomcat7的区别
  9. winrar的破解激活
  10. Python证件照背景自定义改色,带Tkinter界面,代码全文解释!
  11. mysql中约束由数字构成_MySQL 数据类型和约束(外键是重点)
  12. 【Android QR Code】开源项目:ZXing(三)二维码解码
  13. idea快捷键 常用
  14. 关于overflow适配IE的问题
  15. zigzag算法详解
  16. 详解one-hot独热编码
  17. 信也科技股权曝光:顾少丰持股29.4% 有63.7%投票权
  18. Java三大框架SSH面试题锦集
  19. web网站工程项目前期需求分析与规划怎么写?
  20. 关于科研技术的一些常用网址

热门文章

  1. 关闭计算机 网络设备上的445端口,关闭445端口的方法,小编教你电脑如何关闭445端口...
  2. 4字节 经纬度_【笔记】进制转换和经度纬度
  3. b站的视频如何下载到手机上
  4. B站视频下载方法(4K60帧)
  5. ubuntu Opencv4及扩展模块编译安装过程
  6. PPT - 双屏幕情况下,如何设置 PPT 不在主屏幕显示问题?
  7. POI给word中插入图片后打不开的bug
  8. android扫描局域网打印机,Android 浅谈同一局域网下使用WiFi连接打印机
  9. 测试基础-系统测试包括哪些内容
  10. (转)爆款游戏推动硬件普及,5G 促进 VR 产业规模化运用