標籤:圖片等比例縮放 給圖上添加邊框
本文是自己學習所做筆記,歡迎轉載,但請註明出處: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) ----- 圖片的等比例縮放及給圖片添加邊框