ImageUtils

来源:互联网 发布:雅思培训网络课程 编辑:程序博客网 时间:2024/06/06 08:26


public class ImageUtils {public static final int GET_IMAGE_BY_CAMERA = 5001;public static final int GET_IMAGE_FROM_PHONE = 5002;public static final int CROP_IMAGE = 5003;public static Uri imageUriFromCamera;public static Uri cropImageUri;public static void openCameraImage(final Activity activity) {ImageUtils.imageUriFromCamera = ImageUtils.createImagePathUri(activity);Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);intent.putExtra(MediaStore.EXTRA_OUTPUT, ImageUtils.imageUriFromCamera);activity.startActivityForResult(intent, ImageUtils.GET_IMAGE_BY_CAMERA);}public static void openLocalImage(final Activity activity) {Intent intent = new Intent();intent.setType("image/*");intent.setAction(Intent.ACTION_GET_CONTENT);activity.startActivityForResult(intent, ImageUtils.GET_IMAGE_FROM_PHONE);}public static void cropImage(Activity activity, Uri srcUri) {ImageUtils.cropImageUri = ImageUtils.createImagePathUri(activity); Intent intent = new Intent("com.android.camera.action.CROP");intent.setDataAndType(srcUri, "image/*");intent.putExtra("crop", "true");intent.putExtra("aspectX", 1);intent.putExtra("aspectY", 1);intent.putExtra(MediaStore.EXTRA_OUTPUT, ImageUtils.cropImageUri);intent.putExtra("return-data", false);activity.startActivityForResult(intent, CROP_IMAGE);}private static Uri createImagePathUri(Context context) {Uri imageFilePath = null;String status = Environment.getExternalStorageState();SimpleDateFormat timeFormatter = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA);long time = System.currentTimeMillis();String imageName = timeFormatter.format(new Date(time));ContentValues values = new ContentValues(3);values.put(MediaStore.Images.Media.DISPLAY_NAME, imageName);values.put(MediaStore.Images.Media.DATE_TAKEN, time);values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");if (status.equals(Environment.MEDIA_MOUNTED)) {imageFilePath = context.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);} else {imageFilePath = context.getContentResolver().insert(MediaStore.Images.Media.INTERNAL_CONTENT_URI, values);}return imageFilePath;}/** * */public static void deleteImageUri(Context context, Uri uri) {context.getContentResolver().delete(uri, null, null);}/** *  * @param context * @param imageUri */@TargetApi(Build.VERSION_CODES.KITKAT)public static String getImageAbsolutePath(Activity context, Uri imageUri) {if (context == null || imageUri == null)return null;if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT && DocumentsContract.isDocumentUri(context, imageUri)) {if (isExternalStorageDocument(imageUri)) {String docId = DocumentsContract.getDocumentId(imageUri);String[] split = docId.split(":");String type = split[0];if ("primary".equalsIgnoreCase(type)) {return Environment.getExternalStorageDirectory() + "/" + split[1];}} else if (isDownloadsDocument(imageUri)) {String id = DocumentsContract.getDocumentId(imageUri);Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), Long.valueOf(id));return getDataColumn(context, contentUri, null, null);} else if (isMediaDocument(imageUri)) {String docId = DocumentsContract.getDocumentId(imageUri);String[] split = docId.split(":");String type = split[0];Uri contentUri = null;if ("image".equals(type)) {contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;} else if ("video".equals(type)) {contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;} else if ("audio".equals(type)) {contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;}String selection = MediaStore.Images.Media._ID + "=?";String[] selectionArgs = new String[] { split[1] };return getDataColumn(context, contentUri, selection, selectionArgs);}} // MediaStore (and general)if ("content".equalsIgnoreCase(imageUri.getScheme())) {// Return the remote addressif (isGooglePhotosUri(imageUri))return imageUri.getLastPathSegment();return getDataColumn(context, imageUri, null, null);}// Fileelse if ("file".equalsIgnoreCase(imageUri.getScheme())) {return imageUri.getPath();}return null;}private static String getDataColumn(Context context, Uri uri, String selection, String[] selectionArgs) {Cursor cursor = null;String column = MediaStore.Images.Media.DATA;String[] projection = { column };try {cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs, null);if (cursor != null && cursor.moveToFirst()) {int index = cursor.getColumnIndexOrThrow(column);return cursor.getString(index);}} finally {if (cursor != null)cursor.close();}return null;}/** * @param uri The Uri to check. * @return Whether the Uri authority is ExternalStorageProvider. */private static boolean isExternalStorageDocument(Uri uri) {return "com.android.externalstorage.documents".equals(uri.getAuthority());}/** * @param uri The Uri to check. * @return Whether the Uri authority is DownloadsProvider. */private static boolean isDownloadsDocument(Uri uri) {return "com.android.providers.downloads.documents".equals(uri.getAuthority());}/** * @param uri The Uri to check. * @return Whether the Uri authority is MediaProvider. */private static boolean isMediaDocument(Uri uri) {return "com.android.providers.media.documents".equals(uri.getAuthority());}/** * @param uri The Uri to check. * @return Whether the Uri authority is Google Photos. */private static boolean isGooglePhotosUri(Uri uri) {return "com.google.android.apps.photos.content".equals(uri.getAuthority());}public static void saveFile(Context context, Bitmap bm, String fileName) throws IOException {String storageState = Environment.getExternalStorageState();if(!storageState.equals(Environment.MEDIA_MOUNTED)) {return;}File storageDirectory = Environment.getExternalStorageDirectory();File path = new File(storageDirectory, "/boreweibo/weiboimg");if (!path.exists()) {path.mkdirs();}File myCaptureFile = new File(path, fileName);if (!myCaptureFile.exists()) {myCaptureFile.createNewFile();}BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(myCaptureFile));bm.compress(Bitmap.CompressFormat.JPEG, 100, bos);bos.flush();bos.close();}public static byte[] getBitmapByte(String path){  Bitmap bitmap =BitmapFactory.decodeFile(path);    ByteArrayOutputStream out = new ByteArrayOutputStream();      bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);      try {          out.flush();          out.close();      } catch (IOException e) {          e.printStackTrace();      }      return out.toByteArray();  } }


0 0