本文是自己学习所做笔记,欢迎转载,但请注明出处: 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. Java并发工具类Semaphore应用实例
  2. JavaScript标准参考教材(alpha)--笔记
  3. 关于 原码 反码 补码 位运算
  4. 函数调用,统计数中'2’的个数
  5. linux版本的edge多网页标签(tag)不见了咋办
  6. UART协议概述与实现
  7. Security - 轻量级Java身份认证、访问控制安全框架
  8. git 多个stash选择指定的版本恢复
  9. Bootstrap-1
  10. ddk开发 c语言,ddk_helloWDM_原代码是网上高手的杰作
  11. matlab对数据的量化分析方法,金融量化分析数据传输方法与流程
  12. JavaScript 原生js实现鼠标拖拽移动盒子图片
  13. c语言中百分号lf是什么意思,digit_C语言 digit是什么意思
  14. Unity 自定义自发光材质 shader (对比Standard Eimission)
  15. 中国文化产业基地(园区)前景预测和发展战略规划建议报告2021年版
  16. 程序员“薪资被应届生倒挂“现象明显,跳槽还是等待?
  17. 理解设计模式——工厂模式
  18. python-tkinter(7) 实现各种个样的撩妹鼠标拖尾
  19. 计算机专业对口升学考试科目,对口升学信息技术(计算机)类2017年专业课考试大纲...
  20. 商城网站建设的具体开发流程有哪些

热门文章

  1. 经典成功创业-36法则
  2. ug录入属性_ug表格属性
  3. 如何查看win10已激活密钥?查看win10已激活完整密钥的方法!
  4. Postman强大的接口的前置、后置处理教程
  5. java矩形碰撞检测_JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【矩形情况】...
  6. word流程图变为图片格式_word2007转成图片格式的两种方法
  7. html img动态设置图片大小,Js动态设置Img大小
  8. Node.js常用console中的几种方法
  9. YApi接口平台-接口挡板
  10. html初始化调用js函数