java生成点阵图_Android从SD卡读取图片并显示为点阵图

该博客介绍了如何在Android中实现从SD卡读取图片并转化为点阵图,同时展示了如何将点阵图保存为像素矩阵的txt文件,以及从txt文件中恢复并显示点阵图的过程。主要涉及Bitmap操作、文件读写以及界面交互。
摘要由CSDN通过智能技术生成

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

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

bmp=Bitmap.createBitmap(Bitmap2, width*size, height*size,

Bitmap.Config.ARGB_8888);

第4个参数..蛋疼,之前写成bmp.getConfig(),一运行就意外停止。

这个函数的作用就是把像素矩阵转为bitmap,之后在imageView中显示。

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

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

//缩放

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值