Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android項目 之 記事本(12) ----- 圖片的等比例縮放及給圖片添加邊框

android項目 之 記事本(12) ----- 圖片的等比例縮放及給圖片添加邊框

編輯:關於Android編程

本文是自己學習所做筆記,歡迎轉載,但請注明出處:http://blog.csdn.net/jesson20121020

在Android的UI開發中經常會遇到圖片的縮放,就比如記事本,現在的圖片都比較大,如果將原圖不經縮放直接放在屏幕上,則會占滿整個屏幕,而且有時圖片會比屏幕還大,這時就不能完全的顯示整個圖片,所以,必須要進行縮放,但在縮放時,該如何縮放呢,長和寬的縮放比例設置為多少合適呢,為了保持原圖的縱橫比,所以要最好的方法就是約束縮放比例,也就是等比例縮放,相信大家都用過PS中的縮放圖片的功能,有個選項就是約束縮放比例,也就是保持縱橫比,即等比例縮放。

\ \

縮放前 縮放後
<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+ICAgICC1yLHIwP21xMv1t8XLvM/ruty88rWlo6y+zcrH1NrL9bfFtcS5/bPM1tCxo7PW19264bHIo6y0+sLryOfPwqO6ICAgIDwvcD4KPHByZSBjbGFzcz0="brush:java;">        //等比例縮放圖片 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;
	}


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved