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);
今天一下午和一晚上都在纠结第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);
相关文章推荐
- Android中读取SD卡中的图片,并显示到ListView
- Android 读取sd卡图片并显示
- android 根据SD卡中图片路径读取并显示SD中的图片——源代码
- android 根据SD卡中图片路径读取并显示SD中的图片——源代码
- android 根据SD卡中图片路径读取并显示SD中的图片——源代码
- android读取Assets图片资源保存到SD卡然后显示到ImageView里 实例
- android 根据SD卡中图片路径读取并显示SD中的图片——源代码
- android 根据SD卡中图片路径读取并显示SD中的图片——源代码
- android:读取SD卡中的图片显示出来(缩略图),SD卡工具类(13)
- Android中显示sd卡的图片和视频
- Android相机、相册获取图片显示并保存到SD卡
- android 读取sd卡(sdcard)图片设置为按钮背景(Button背景设置)代码
- 同一张图片从res和Sd卡中读取显示大小不一样
- UNO R3从SD卡读取图片并显示到2.2寸液晶屏上(220x176)
- Android关于ListView显示SD卡上的Bitmap的图片(图片压缩之后)
- Android 读取本地(SD卡)图片
- android sd卡读取图片 并处理大图
- Android相机、相册获取图片显示并保存到SD卡
- android 读取sd卡中的图片
- Android实例]------获取sd卡图片显示出来