图片

来源:互联网 发布:手机护眼模式 知乎 编辑:程序博客网 时间:2024/05/17 03:06
package com.imooc.tab03;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.net.URL;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.Locale;import android.app.Activity;import android.content.ContentValues;import android.content.Intent;import android.database.Cursor;import android.graphics.Bitmap;import android.graphics.Bitmap.CompressFormat;import android.graphics.BitmapFactory;import android.net.Uri;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import android.provider.MediaStore.Images.Media;import android.support.v4.app.Fragment;import android.text.format.DateFormat;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.Button;import android.widget.ImageView;public class AddressFragment extends Fragment {private Button takeP, getP;private ImageView photo;private Uri imageUri;private Bitmap mPhotoImage;/** 图片路径 **/private String mCurrentPhotoStr;private static final int TAKE_PHOTO = 1;private static final int GET_PHOTO = 2;@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View view = inflater.inflate(R.layout.tab03, null);getP = (Button) view.findViewById(R.id.button_photo);takeP = (Button) view.findViewById(R.id.button_takePhoto);photo = (ImageView) view.findViewById(R.id.photo);OnClickListener listener = new OnClickListener() {@Overridepublic void onClick(View v) {//File outputImage = new File(//Environment.getExternalStorageDirectory(),//"tempImage.jpg");//try {//if (outputImage.exists()) {//outputImage.delete();//}//outputImage.createNewFile();//} catch (IOException e) {//e.printStackTrace();//}//imageUri = Uri.fromFile(outputImage);switch (v.getId()) {case R.id.button_takePhoto:// TODO Auto-generated method stub// 拍照INTENT 不能setdata// Intent intent =// newIntent("android.media.action.IMAGE_CAPTURE");// 相册INTENT要Intent intent2 = new// Intent("android.intent.action.GET_CONTENT");// intent.setType("image/*");// setType()就是设置默认用哪种格式打开,比如"video/*","audio/amr"Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);startActivityForResult(intent, TAKE_PHOTO);break;case R.id.button_photo:Intent intent2 = new Intent("android.intent.action.GET_CONTENT");intent2.setType("image/*");intent2.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);startActivityForResult(intent2, GET_PHOTO);default:break;}}};takeP.setOnClickListener(listener);getP.setOnClickListener(listener);return view;}/** * 之前图片没有显示出来是因为没有获取到intent传过来的imageUri Uri pUrl = * data.getData();resizePhoto(pUrl); 如果想在Activity中得到新打开Activity * 关闭后返回的数据,需要使用系统提供的startActivityForResult(Intent intent, int * requestCode)方法打开新的Activity, 新的Activity * 关闭后会向前面的Activity传回数据,为了得到传回的数据,必须在前面的Activity中重写onActivityResult(int * requestCode, int resultCode, Intent data)方法。 */@Overridepublic void onActivityResult(int requestCode, int resultCode, Intent data) {// TODO Auto-generated method stubsuper.onActivityResult(requestCode, resultCode, data);getActivity();if (requestCode == TAKE_PHOTO && resultCode == Activity.RESULT_OK) {String sdStatus = Environment.getExternalStorageState();if (!sdStatus.equals(Environment.MEDIA_MOUNTED)) { // 检测sd是否可用Log.v("TestFile","SD card is not avaiable/writeable right now.");return;}Bundle bundle = data.getExtras();Bitmap bitmap = (Bitmap) bundle.get("data");// 获取相机返回的数据,并转换为Bitmap图片格式FileOutputStream b = null;File file = new File("/sdcard/myImage/");file.mkdirs();// 创建文件夹   String fileName = "/sdcard/myImage/111.jpg";try {b = new FileOutputStream(fileName);bitmap.compress(Bitmap.CompressFormat.JPEG, 100, b);// 把数据写入文件} catch (FileNotFoundException e) {e.printStackTrace();} finally {try {b.flush();b.close();} catch (IOException e) {e.printStackTrace();}}photo.setImageBitmap(bitmap);// 将图片显示在ImageView里}if (requestCode == GET_PHOTO && resultCode == Activity.RESULT_OK) {// 获得图片的uri//Uri pUri = data.getData();Uri uri = data.getData();// cursor游标Cursor cursor = getActivity().getContentResolver().query(uri, null, null,null, null);cursor.moveToFirst();int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);mCurrentPhotoStr = cursor.getString(idx);cursor.close();resizePhoto();photo.setImageBitmap(mPhotoImage);}}private void resizePhoto() {// TODO Auto-generated method stubBitmapFactory.Options options = new BitmapFactory.Options();options.inJustDecodeBounds = true;BitmapFactory.decodeFile(mCurrentPhotoStr, options);double ratio = Math.max(options.outWidth * 1.0d / 1024f,options.outHeight * 1.0d / 1024f);options.inSampleSize = (int) Math.ceil(ratio);options.inJustDecodeBounds = false;mPhotoImage = BitmapFactory.decodeFile(mCurrentPhotoStr, options);}//private void resizePhoto(Uri uri) {//// TODO Auto-generated method stub//BitmapFactory.Options options = new BitmapFactory.Options();//options.inSampleSize = 2; // 直接设置它的压缩率,表示1/2////Bitmap bitmap = null;//try {//bitmap = BitmapFactory.decodeStream(getActivity()//.getContentResolver().openInputStream(uri), null, options);//} catch (FileNotFoundException e) {//// TODO Auto-generated catch block//e.printStackTrace();//}//photo.setImageBitmap(bitmap);////}//// private void resizePhoto(Uri url) {// // TODO Auto-generated method stub// Bitmap bitmap = null;// BitmapFactory.Options options = new BitmapFactory.Options();// options.inJustDecodeBounds = true;// double ratio = Math.max(options.outWidth * 1.0d / 1024f,// options.outHeight * 1.0d / 1024f);// options.inSampleSize = (int) Math.ceil(ratio);// options.inJustDecodeBounds = false;//// try {// bitmap = BitmapFactory.decodeStream(getActivity()// .getContentResolver().openInputStream(url), null, options);// } catch (FileNotFoundException e) {// // TODO Auto-generated catch block// e.printStackTrace();// }// photo.setImageBitmap(bitmap);// }}

0 0
原创粉丝点击