之前做一个项目的时候需要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);
//缩放