android项目 之 记事本(12) ----- 图片的等比例缩放及给图片添加边框
来源:互联网 发布:unity3d游戏下载 编辑:程序博客网 时间:2024/04/29 16:45
本文是自己学习所做笔记,欢迎转载,但请注明出处: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;}
2 0
- android项目 之 记事本(12) ----- 图片的等比例缩放及给图片添加边框
- android等比例缩放图片
- 图片的等比例缩放
- 图片的缩放----等比例缩放
- 图片等比例缩放
- 图片等比例缩放
- 图片等比例缩放
- 图片等比例缩放
- 图片等比例缩放
- 图片等比例缩放
- 等比例缩放图片
- 等比例缩放图片
- 等比例缩放图片
- 图片等比例缩放
- 等比例图片缩放
- 图片等比例缩放
- 等比例缩放图片
- 图片等比例缩放
- 面试经验
- 可变参数列表
- 【Java TCP/IP Socket】UDP Socket(含代码)
- Canvas入门(1):绘制矩形、圆、直线、曲线等基本图形
- Android WindowFeature小探究
- android项目 之 记事本(12) ----- 图片的等比例缩放及给图片添加边框
- 机器学习之旅---logistic回归
- 第十九章 19.4.3节练习
- SAP
- Linux 安装Maven
- Redis关键点(rehash)<转>
- 懒人nagios页面监控脚本
- Splay入门题+1588: [HNOI2002]营业额统计
- HTTP实体长度的确定规则