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

來源:互聯網
上載者:User

標籤:圖片等比例縮放   給圖上添加邊框   

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.