java读sd图片_Android从SD卡读取图片并显示

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

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

bmp=Bitmap.createBitmap(Bitmap2, width*size, height*size, Bitmap.Config.ARGB_8888);

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

af80fd5c5fc28cffdc3dd57518ecd6fa.png

c5e7af2e0bfed43c645bb26938fdfe7d.png

782da438538b082300222ab73732806a.png

b6ed7783402ae200e01d25f601d28c2f.png

653c728c9faa1244618295c67a8a20da.png

6d33393f24469a43cc19ebcc14ce841c.png

0931d9af3db54b844b1e37aaee1e6f30.png

413941bfb0061f0f73d7cb33d66250c1.png

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);

//缩放

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值