主要介绍加载位图的5中方式:


package com.ghg.BitmapLoad;import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.ByteArrayOutputStream;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.BitmapFactory.Options;import android.os.Bundle;import android.view.View;import android.widget.ImageView;public class Day0702_BitmapLoadActivity extends Activity {    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        initView();    }    private ImageView imageView;private void initView() {// TODO Auto-generated method stubimageView=(ImageView) findViewById(R.id.iv_image);}public void doClick(View view){/** * 1 .【加载位图】通过文件路径加载位图,显示原图,大小比例不变 *//*  Bitmap bmp=BitmapFactory.decodeFile("/mnt/sdcard/dog.jpg");imageView.setImageBitmap(bmp);  *//** * 2.【加载位图】通过文件路径加载位图,(若scale 值为n>1) 则图片长,宽变为原来的1/n,相当于把图片压缩到 * 原来的1/(n*n),加载到手机内存占用的空间小,我们可以再xml文件中设置ImageView的scaleType=fitCenter属性, * 进行拉伸自适应操作,拉伸后的图像不是很清楚,但还是可以接受的。 *  *     *//*Options options=new Options();options.inSampleSize=2; Bitmap bm=BitmapFactory.decodeFile("/mnt/sdcard/dog.jpg", options);imageView.setImageBitmap(bm);*//** * 3.【加载位图】通过文件路径加载位图,此种方式,可以把原图缩小,或放大。 *    下面例子是先压缩再放大。 */Options opts=new Options();//设置仅加载位图边界信息(相当于位图的信息,但没有加载位图)opts.inJustDecodeBounds=true;//加载指定路径图片的边界信息,保存到opts中BitmapFactory.decodeFile("/mnt/sdcard/dog.jpg", opts);//计算收缩比例int xScale=opts.outWidth/200;int yScale=opts.outHeight/200;opts.inSampleSize=xScale>yScale?xScale:yScale;//设置加载边界信息为falseopts.inJustDecodeBounds=false;Bitmap bm=BitmapFactory.decodeFile("/mnt/sdcard/dog.jpg", opts);imageView.setImageBitmap(bm);/** * 4.【加载位图】通过输入流加载位图 *//*FileInputStream is;try {is = new FileInputStream("/mnt/sdcard/dog.jpg");Bitmap bm=BitmapFactory.decodeStream(is);imageView.setImageBitmap(bm);} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}*//** * 5.【加载位图】通过字节数组加载位图,图片长,宽减半; *///从网络上读取图片的字符串数组(输入流)//字节数组输出流/*ByteArrayOutputStream out;try {FileInputStream fis=new FileInputStream("/mnt/sdcard/dog.jpg");BufferedInputStream bis=new BufferedInputStream(fis);out = new ByteArrayOutputStream();int hasRead=0;byte[] buffer=new byte[1024*2];while((hasRead=bis.read(buffer))>0){//读出多少数据,向输出流中写入多少out.write(buffer);out.flush();}out.close();fis.close();bis.close();byte[] data=out.toByteArray();//长宽减半Options opts=new Options();opts.inSampleSize=2;Bitmap bm=BitmapFactory.decodeByteArray(data, 0, data.length, opts);imageView.setImageBitmap(bm);} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}*/}}


更多相关文章

  1. Android(安卓)Studio加载老旧项目会遇到的问题
  2. android 根据视频路径获取视频缩略图
  3. Android(安卓)图片Bitmap的剪切
  4. android环境变量的配置
  5. Android(安卓)API 中文(14) —— ViewStub
  6. Android(安卓)瀑布流Demo
  7. picasso_强大的Android图片下载缓存库
  8. Mac配置Android环境 adb
  9. Android多媒体访问

随机推荐

  1. [android]Context 上下文
  2. android完全退出程序的方法
  3. android Handler导致内存泄露分析
  4. Android数据通信——JSON&Gson(Android(
  5. Android图片压缩-大小与质量压缩
  6. Android入门之TabHost,TabWidget
  7. cocox2d-x在android下崩溃log的定位
  8. android TextView ellipsize 只显示一个
  9. Android官方入门文档[7]样式化操作栏
  10. Android 近百个项目的源代码