Android下將圖片載入到記憶體中

來源:互聯網
上載者:User

標籤:android   style   class   blog   code   java   

       Android的系統的標準預設每一個應用程式分配的記憶體是16M.所以來說是很寶貴的,在建立應用的時候要儘可能的去節省記憶體,可是在載入一些大的檔案的時候,比方圖片是相當耗記憶體的,一個1.3M的圖片,解析度是2560X1920(寬X高)圖片當載入到手機記憶體的時候就會請求19M的一塊記憶體,這是遠遠超出了系統內建的記憶體空間,這時候應用程式就會掛掉,所以我們要進行圖片的縮放處理,以下我就來帶大家建立一個用來圖片縮放的應用;

     應用例如以下:

  


核心代碼的實現:

package com.examp.loadpicture;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.BitmapFactory.Options;import android.os.Bundle;import android.view.Display;import android.view.View;import android.view.WindowManager;import android.widget.ImageView;public class MainActivity extends Activity {private ImageView iv;private int windowHeight;private int windowWidth;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);iv = (ImageView) findViewById(R.id.iv);// 擷取手機的螢幕的視窗大小WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);Display display = windowManager.getDefaultDisplay();windowHeight = display.getHeight();windowWidth = display.getWidth();}public void loadPicture(View view) {// 位元影像工廠類// Bitmap bitmap = BitmapFactory.decodeFile("/sdcard/x.jpg");// 將指定的檔案進行編碼,轉化為位元影像// iv.setImageBitmap(bitmap);// 圖片解析配置的類Options options = new Options();// 不會真的進行圖片解析,僅僅是擷取到圖片的頭資訊:寬X高 日期等options.inJustDecodeBounds = true;// 設定圖片解析類的目標檔案BitmapFactory.decodeFile("/sdcard/x.jpg", options);// 擷取圖片的高X寬int imageHeight = options.outHeight;int imageWidth = options.outWidth;System.out.println("圖片的高:" + imageHeight + "圖片的寬:" + imageWidth);// 使用圖片的寬高和螢幕的寬高進行計算,算出比例int scaleX = imageWidth / windowWidth;int scaleY = imageHeight / windowHeight;// 預設的比例int scale = 1;if (scaleX > scaleY & scaleY >= 1) {scale = scaleX;}if (scaleY > scaleX & scaleX >= 1) {scale = scaleY;}// 設定圖片解析器真的去解析圖片options.inJustDecodeBounds = false;// 設定解析的採樣率,設定的值是縮放比例1/scaleoptions.inSampleSize = scale;// 再次擷取圖片位元影像,並設定採樣率Bitmap bitmap = BitmapFactory.decodeFile("/sdcard/x.jpg", options);iv.setImageBitmap(bitmap);}}

DEMO下載:

http://download.csdn.net/detail/u011936142/7448597




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.