您的位置:首页 > 移动开发 > Android开发

Android从SD卡读取图片并显示

2014-02-20 16:45 393 查看
之前做一个项目的时候需要1.从SD卡读取图片转为预览图(点阵图,类似马赛克),2.保存当前预览图到特定文件夹,保存为一个txt,txt里存的是像素矩阵。3.从那个特定文件夹里读取像素矩阵,显示为预览图。

今天一下午和一晚上都在纠结第3个任务。终于搞定了。

bmp=Bitmap.createBitmap(Bitmap2, width*size, height*size, Bitmap.Config.ARGB_8888);
第4个参数..蛋疼,之前写成bmp.getConfig(),一运行就意外停止。这个函数的作用就是把像素矩阵转为bitmap,之后在imageView中显示。
































Activity01Activity.java :

 

package zhang.zhuoyueBei.SDCardFileExplorerAndFileToBitMap;

import zhang.zhuoyueBei.SDCardFileExplorerAndFileToBitMap.R;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

public class Activity01Activity extends Activity {

   

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

       

       

       

       

        Button button3=(Button) findViewById(R.id.button3);

        button3.setOnClickListener(new Button.OnClickListener() {

   public void onClick(View v)

   {

    

    Intent intent = new Intent();

    

    intent.setClass(Activity01Activity.this, FileToBitMapActivity.class);

    

    startActivity(intent);

    

    Activity01Activity.this.finish();

   }

        });

    }

   

   

    @Override

    public void onStart()

 {

  super.onStart();

 }

    @Override

 public void onResume()

 {

  super.onResume();

 }

    @Override

 public void onPause()

 {

  super.onPause();

 }

    @Override

 public void onStop()

 {

  super.onStop();

 }

    @Override

 public void onDestroy()

 {

  super.onDestroy();

 }

    @Override

 public void onRestart()

 {

  super.onRestart();

 }

   

   

}

 

 

 

FileToBitMapActivity.java :

 

 

package zhang.zhuoyueBei.SDCardFileExplorerAndFileToBitMap;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import zhang.zhuoyueBei.SDCardFileExplorerAndFileToBitMap.R;

import android.app.Activity;

import android.content.Intent;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.Canvas;

import android.os.Bundle;

import android.os.Environment;

import android.view.View;

import android.widget.Button;

import android.widget.ImageView;

import android.widget.TextView;

import android.widget.Toast;

import android.graphics.Matrix;

public class FileToBitMapActivity extends Activity

{

 String SDcardPath;

 String FolderPath;

 

 String filePath;

 int state=0;//0 没参数,1 取得imagepath,2取得资源文件path

 

 int width=16;

 int height;

 

    int initWidth;

    int initHeight;

 

    Bitmap bmp;

   

    int[] Bitmap1;//缩放后16行的像素矩阵

   

    int size=20;//1格点阵的边长

    int[] Bitmap2;//缩略图

    String res=null;

   

    ImageView mImageView;

   

   

   

    public String getSDPath(){

        File sdDir = null;

        boolean sdCardExist = Environment.getExternalStorageState()  

                            .equals(android.os.Environment.MEDIA_MOUNTED);   //判断sd卡是否存在

        if   (sdCardExist)  

        {                              

          sdDir = Environment.getExternalStorageDirectory();//获取根目录

       }  

        return sdDir.toString();

       

 }

   

   

    @Override

    public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.filetobitmap);

  

  SDcardPath=getSDPath();

  FolderPath=SDcardPath+"/MagicSwing";

  

  Bundle bundle= new Bundle();

  bundle=this.getIntent().getExtras();

  if(bundle!=null){

  filePath=bundle.getString("filePath");

  state=bundle.getInt("state");

  if(state==1){

   

      Bitmap   image = BitmapFactory.decodeFile(filePath);

      initWidth = image.getWidth();

      initHeight = image.getHeight();

      float scale=((float)width)/initWidth;

      height=(int)(initHeight*scale);

        

         //将image缩放后存在bmp中

         Matrix matrix=new Matrix();

         //缩放矩阵

         matrix.postScale(scale,scale);

         //缩放

   bmp=Bitmap.createBitmap(image,0,0,initWidth,initHeight,matrix,true);

     
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  SD卡读取图片