现在的位置: 首页 > 综合 > 正文

android 图片压缩显示方法

2018年09月04日 ⁄ 综合 ⁄ 共 2362字 ⁄ 字号 评论关闭

    android ImageVIew 设置图片过大会出现将无法显示问题,我是通过压缩图片来解决的;

                        1:压缩指定的倍数

          

          

package com.example.android_ditamp;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		//图片存在了 Assets 文件夹的images文件夹中
		AssetManager manager = getAssets();
		
		InputStream in = null;
		
		try {
			
			in = manager.open("images/"+"biglog.png");
	
		} catch (IOException e) {
		
			e.printStackTrace();
		}
		
		// 处理res文件中的资源图片
		//InputStream  in = getResources().openRawResource(R.drawable.ic_launcher);
		
		
		//BitmapFactory.Options 根据此类我们可以对图片进行压缩
		BitmapFactory.Options options = new BitmapFactory.Options();
		
		//这个方法API中介绍 	options.inJustDecodeBounds =true ; 得到的Bitmap 为空!不占内存!(虽然得到的位图为空,但我们可以根据   options得到图片的基本信息,例如宽和高)反之的到得Bitmap不为空;
		
		options.inJustDecodeBounds =false ;
        
		//这个参数就是压缩比例  值为10,长宽高会变为原来的1/10,图片大小变为原来的1/10*10;值小于等于1时,图片也不会放大,不会改变  
		options.inSampleSize = 10 ;
				
		Bitmap mp =BitmapFactory.decodeStream(in,null,options);

				
		((ImageView)(findViewById(R.id.IMG))).setImageBitmap(mp);
		
		
	}

}

 2:压缩到指定的高度或者宽度

 

package com.example.android_ditamp;

import java.io.IOException;
import java.io.InputStream;

import android.app.Activity;
import android.content.res.AssetManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.widget.ImageView;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		//图片存在了 Assets 文件夹的images文件夹中
		AssetManager manager = getAssets();
		
		InputStream in = null;
		
		
		try {
			
			in = manager.open("images/"+"biglog.png");
	
		} catch (IOException e) {
		
			e.printStackTrace();
		}
		
		
		BitmapFactory.Options options = new BitmapFactory.Options();
		//参考对象
		BitmapFactory.Options option = new BitmapFactory.Options();
		
		
		option.inJustDecodeBounds = true;
				
		options.inJustDecodeBounds =false ;
        
		// 得到mapnull为空
		@SuppressWarnings("unused")
		Bitmap mpnull =BitmapFactory.decodeStream(in,null,option);
		//先根据option得到原图片Height,tWidth 这不是用mpnull得到长宽注意下
		
		//我们要把Height压缩到200(不能大于原图片大小,否者不会改变);
		
		float Height = option.outHeight;
		//压缩高度为200,宽度会按比例缩减;(这最后得到的高度可能会和200有一点差别大概在5-10个像素左右)
		options.inSampleSize = (int) Height/200 ;
		
		Bitmap mp =BitmapFactory.decodeStream(in,null,options);

				
		((ImageView)(findViewById(R.id.IMG))).setImageBitmap(mp);
		
		
	}

}

                                                                                                                                   小知识,汇聚大智慧!

 

 

 

抱歉!评论已关闭.