圖片二次取樣簡單示例

funnyok發表於2021-09-09

佈局檔案:

    xmlns:tools=""

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical"

   >

   

        android:id="@+id/iv"

        android:layout_width="match_parent"

        android:layout_height="match_parent"

       />

MainActivit.java

package com.example.day025_exloadertwince;

import android.os.Bundle;

import android.app.Activity;

import android.content.Context;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.view.Menu;

import android.widget.ImageView;

public class MainActivity extends Activity {

    ImageView iv;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//初始化控制元件

iv=(ImageView) findViewById(R.id.iv);

//獲取螢幕寬度和高度

int width=getResources().getDisplayMetrics().widthPixels;

int height=getResources().getDisplayMetrics().heightPixels;

//二次取樣解析

Bitmap bm=getBitmap(width, height, R.drawable.oom);

iv.setImageBitmap(bm);

}

   

public Bitmap getBitmap(int newWidth,int newHeight,int imageId){

Bitmap bm=null;

BitmapFactory.Options opt=new BitmapFactory.Options();

opt.inJustDecodeBounds=true;

BitmapFactory.decodeResource(getResources(), imageId,opt);

int width=opt.outWidth;

int height=opt.outHeight;

int scaleX=width/newWidth;

int scaleY=height/newHeight;

int scale=scaleX>scaleY?scaleX:scaleY;

opt.inJustDecodeBounds=false;

opt.inSampleSize=scale;

              bm= BitmapFactory.decodeResource(getResources(),imageId,opt);

return bm;

}

}

原文連結:http://www.apkbus.com/blog-813041-61335.html

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3137/viewspace-2814829/,如需轉載,請註明出處,否則將追究法律責任。

相關文章