主要介绍加载位图的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 根据视频路径获取视频缩略图
  2. Android Studio加载老旧项目会遇到的问题
  3. java/android 统计文件夹大小及删除文件夹下所有文件和路径
  4. Android中AppWidget加载流程(一)
  5. Android下拉刷新和上拉加载更多

随机推荐

  1. 转:Android(安卓)设置EditText光标颜色及
  2. Android(安卓)如何实现带滚动条的TextVie
  3. Android(安卓)XML Editor cannot process
  4. Github 上Top1的Android(安卓)异步网络请
  5. Android的onCreateOptionsMenu()创建菜单
  6. Android的按键处理
  7. Android(安卓)MapView 申请apiKey
  8. Android深入浅出系列课程---Lesson8 Andr
  9. android的互联网开发
  10. Android中pm命令用法详解