首页 > 代码库 > android项目 之 记事本(12) ----- 图片的等比例缩放及给图片添加边框
android项目 之 记事本(12) ----- 图片的等比例缩放及给图片添加边框
在Android的UI开发中经常会遇到图片的缩放,就比如记事本,现在的图片都比较大,如果将原图不经缩放直接放在屏幕上,则会占满整个屏幕,而且有时 图片会比屏幕还大,这时就不能完全的显示整个图片,所以,必须要进行缩放,但在缩放时,该如何缩放呢,长和宽的缩放比例设置为多少合适呢,为了保持原图的 纵横比,所以要最好的方法就是约束缩放比例,也就是等比例缩放,相信大家都用过PS中的缩放图片的功能,有个选项就是约束缩放比例,也就是保持纵横比,即 等比例缩放。
缩放前 缩放后
等比例的缩放思想很简单,就是在缩放的过程中保持纵横比,代码如下:
[java] view plaincopy
- //等比例缩放图片
- 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是长和宽缩放到的最大像素。
今天再来实现一个给图片添加边框效果,当然了,这里我简单的添加了一个线条边框,也可以用其他好看的边框加在图片上,先看效果图:
其实,给图片加边框的思想,就是在图片的四周绘制一个矩形,代码如下:
[java] view plaincopy
- //给图片加边框,并返回边框后的图片
- 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) ----- 图片的等比例缩放及给图片添加边框
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。