原汁原味的图片(↑)与压缩图片(↓)的对比
权限设置
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
代码
public class MainActivity extends Activity {
private String fileName="123",filePath="photo";
private Bitmap bitmap;
private ImageView iv;
//声明一个全局变量,用做等下拍照获取的图片的路径
private String caotureFile;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv = (ImageView)findViewById(R.id.imageView);
findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
getImageFromCamera();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
#创建SD卡路径下的文件夹,保存图片
public void getImageFromCamera() throws IOException{
//判断sd卡状态
String sdState=Environment.getExternalStorageState();
if (sdState.equals(Environment.MEDIA_MOUNTED)) {
//打开相机
Intent intent = new
Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// 获取sd卡目录,创建文件
String SDPATH=Environment.getExternalStorageDirectory()+"/";
//重点,这里是创建目录
String filepath = SDPATH+"pthoto1/";
caotureFile = filepath+System.currentTimeMillis()+".jpg";
File file = new File(filepath);
if(!file.exists())file.mkdirs();
File caeatFile = new File(caotureFile);
caeatFile.createNewFile();
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(caotureFile)));
startActivityForResult(intent, 1);
}
}
重点部分,将图片重新压缩
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//判断调用者操作
if (resultCode==RESULT_OK) {
//获取图片,转化成bitmap格式
bitmap = BitmapFactory.decodeFile(caotureFile,null);
//把图片显示到你想要的图片标签上
iv.setImageBitmap(bitmap);
FileOutputStream fout = null;
try {
fout = new FileOutputStream(caotureFile);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//把文件保存在本地的指定文件夹下
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fout);
break;
}
}
}