1. File转Bitmap
2. Bitmap 转 File
3. Uri 转 File
4. File 转 Uri
5. url 转 Bitmap(加载网络图片)
6. Uri 转 Bitmap
7. Path 转 Uri
8. Uri 转 Path
9. byte[] 转 Bitmap
10. Bitmap 转 byte[]
11. Bitmap 转 Drawable
12. Drawable 转 Bitmap

1.文件(path)转Bitmap

    File file = new File(filePath);    Uri uri = Uri.fromFile(file);    Bitmap bitmap = MediaStore.Images.Media.getBitmap(mContext.getContentResolver(), uri);

    Bitmap loadbitmap = BitmapFactory.decodeFile(file);    /*同类型的还有     BitmapFactory.decodeStream(InputStream inputStream);//stream 转 bitmap    BitmapFactory.decodeResource();//resource 转 bitmap    BitmapFactory.decodeByteArray();//bytes 转 bitmap    BitmapFactory.decodeFileDescriptor();//fileDescriptor 转 bitmap    ...    */

或 先压缩,再转

    Bitmap loadbitmap = BitmapFactory.decodeFile(imagePath, getBitmapOption(2));    private BitmapFactory.Options getBitmapOption(int inSampleSize)    {        BitmapFactory.Options options = new BitmapFactory.Options();        options.inPurgeable = true;        options.inSampleSize = inSampleSize;        return options;    }

2.Bitmap 转 文件

    public void saveBitmapFile(Bitmap bitmap) {        File file = new File(filePath);//将要保存图片的路径        try {            BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bos);            bos.flush();            bos.close();        } catch (IOException e) {            e.printStackTrace();        }    }

3.Uri 转 File

    /**     * uri 转 File     */    public File uriTurnFile(Uri uri) {        return new File(uri.getPath());    }

4.File 转 Uri

    /**     * File 转 Uri     */    public Uri fileTurnUri(File file) {        return  Uri.fromFile(file);    }

5.url路径 转 Bitmap(加载网络图片)

    /**     * 根据url路径 转bitmap     *     * @param urlpath     * @return     */    public Bitmap getBitmap(String urlpath) {        Bitmap map = null;        try {            URL url = new URL(urlpath);            URLConnection conn = url.openConnection();            conn.connect();            InputStream in;            in = conn.getInputStream();            map = BitmapFactory.decodeStream(in);        } catch (IOException e) {            e.printStackTrace();        }        return map;    }

6.Uri 转 Bitmap

    //读取图片,并将图片缩放到指定的目标大小    InputStream stream = getContentResolver().openInputStream(uri);    Bitmap bitmap = BitmapFactory.decodeStream(stream, null, options);    stream.close();

Bitmap bitmap = MediaStore.Images.Media.getBitmap(mContext.getContentResolver(), uri);

7.Path 转 Uri

FilePath 转 FileUri

File f = new File(filePath);Uri uri = Uri.fromFile(f);

FilePath 转 MediaUri

   public static Uri getMediaUriFromPath(Context context, String path) {        Uri mediaUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;        Cursor cursor = context.getContentResolver().query(mediaUri, null,                 MediaStore.Images.Media.DISPLAY_NAME + "= ?",                new String[] {path.substring(path.lastIndexOf("/") + 1)},                null);        Uri uri = null;        if(cursor.moveToFirst()) {            uri = ContentUris.withAppendedId(mediaUri,                    cursor.getLong(cursor.getColumnIndex(MediaStore.Images.Media._ID)));        }        cursor.close();        return uri;    }

8.Uri 转 Path

第一种(对比后两种貌似覆盖不是很全)

    /**     * 4.4之前     * uri 转 path     */    public String getRealPathFromUri(Context context, Uri contentUri) {        Cursor cursor = null;        try {         String[] proj = { MediaStore.Images.Media.DATA };        cursor = context.getContentResolver().query(contentUri,  proj, null, null, null);        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);        cursor.moveToFirst();        return cursor.getString(column_index);    } finally {        if (cursor != null) {            cursor.close();        }    }}    /**     * android 4.4 及以后获取 uri 真实路径     */    public String getRealFilePath(Uri uri) {        final String scheme = uri.getScheme();        String data = null;        if (scheme == null)            data = uri.getPath();        else if (ContentResolver.SCHEME_FILE.equals(scheme)) {            data = uri.getPath();        } else if (ContentResolver.SCHEME_CONTENT.equals(scheme)) {            Cursor cursor = mContext.getContentResolver().query(uri, new String[]{MediaStore.Images.ImageColumns.DATA}, null, null, null);            if (null != cursor) {                if (cursor.moveToFirst()) {                    int index = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);                    if (index > -1) {                        data = cursor.getString(index);                    }                }                cursor.close();            }        }        return data;    }

第二种(摘自第一行代码)

   private void handleImageBeforeKitKat(Uri uri) {        String imagePath = getImagePath(uri, null);    }    @TargetApi(Build.VERSION_CODES.KITKAT)    private void handleImageOnKitKat(Uri uri) {        String imagePath = null;        if (DocumentsContract.isDocumentUri(this, uri)) {            //如果是Document类型的Uri,则通过document id处理            String docId = DocumentsContract.getDocumentId(uri);            if ("com.android.providers.media.documents".equals(uri.getAuthority())) {                String id = docId.split(":")[1];//解析出数字格式的id                String selection = MediaStore.Images.Media._ID + "=" + id;                imagePath = getImagePath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, selection);            } else if ("com.android.providers.downloads.documents".equals(uri.getAuthority())) {                Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), Long.valueOf(docId));                imagePath = getImagePath(contentUri, null);            }        } else if ("content".equalsIgnoreCase(uri.getScheme())) {            //如果是content类型的uri,使用普通方式处理            imagePath = getImagePath(uri, null);        } else if ("file".equalsIgnoreCase(uri.getScheme())) {            //如果是file类型的Uri,直接获取图片路径            imagePath = uri.getPath();        }    }    private String getImagePath(Uri uri, String selection) {        String path = null;        //通过Uri和selection来获取真实的图片路径        Cursor cursor = getContentResolver().query(uri, null, selection, null, null);        if (cursor != null) {            if (cursor.moveToFirst()) {                path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));            }            cursor.close();        }        return path;    }    (摘自第一行代码)

第三种(来自网络)

    /**     * 根据Uri获取图片绝对路径,解决Android4.4以上版本Uri转换     *     * @param context     * @param imageUri     */    public static String getImageAbsolutePath(Context 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)        else if ("content".equalsIgnoreCase(imageUri.getScheme())) {            // Return the remote address            if (isGooglePhotosUri(imageUri))                return imageUri.getLastPathSegment();            return getDataColumn(context, imageUri, null, null);        }        // File        else if ("file".equalsIgnoreCase(imageUri.getScheme())) {            return imageUri.getPath();        }        return null;    }    public 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.     */    public 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.     */    public 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.     */    public 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.     */    public static boolean isGooglePhotosUri(Uri uri) {        return "com.google.android.apps.photos.content".equals(uri.getAuthority());    }    /**     * Try to return the absolute file path from the given Uri     * 4.4 以下     * @param context     * @param uri     * @return the file path or null     */    public static String getPath(final Context context, final Uri uri) {        if (null == uri) return null;        final String scheme = uri.getScheme();        String data = null;        if (scheme == null)            data = uri.getPath();        else if (ContentResolver.SCHEME_FILE.equals(scheme)) {            data = uri.getPath();        } else if (ContentResolver.SCHEME_CONTENT.equals(scheme)) {            Cursor cursor = context.getContentResolver().query(uri, new String[]{MediaStore.Images.ImageColumns.DATA}, null, null, null);            if (null != cursor) {                if (cursor.moveToFirst()) {                    int index = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);                    if (index == -1) {                        index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);                    }                    if (index > -1) {                        data = cursor.getString(index);                    }                }                cursor.close();            }        }        return data;    }

9. byte[] 转 bitmap

public Bitmap Bytes2Bimap(byte[] b) {    if (b.length != 0) {        return BitmapFactory.decodeByteArray(b, 0, b.length);    } else {        return null;    }}

10. bitmap 转 byte[]

public byte[] Bitmap2Bytes(Bitmap bm) {        ByteArrayOutputStream baos = new ByteArrayOutputStream();        bm.compress(Bitmap.CompressFormat.PNG, 100, baos);        return baos.toByteArray();}

11. bitmap 转 drawable

BitmapDrawable bd= new BitmapDrawable(bitmap); BitmapDrawable bd= new BitmapDrawable(getResource(), bitmap);  

12. drawable 转 bitmap

public static Bitmap drawableToBitmap (Drawable drawable) {    Bitmap bitmap = null;    if (drawable instanceof BitmapDrawable) {        BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable;        if(bitmapDrawable.getBitmap() != null) {            return bitmapDrawable.getBitmap();        }    }    // 取 drawable 的颜色格式,Bitmap.createBitmap 第三个参数    Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565;      if(drawable.getIntrinsicWidth() <= 0 || drawable.getIntrinsicHeight() <= 0) {        bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888); // Single color bitmap will be created of 1x1 pixel    } else {        bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);    }    //将drawable内容画到画布中    Canvas canvas = new Canvas(bitmap);    drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());    drawable.draw(canvas);    return bitmap;}

更多相关文章

  1. android红米等关于读取本地文件夹图片获取路径的问题的解决
  2. android中打开本地doc、pdf、ppt、text等文件功能的实现
  3. Android(安卓)adb方式获取手机总内存和可用内存信息
  4. android studio使用jni调用opencv库实现图片转换【详细实例】(二)
  5. Android(安卓)M动态申请获取权限android.permission.READ_PHONE_
  6. Android获取设备已安装的应用
  7. android上的一个网络接口和图片缓存框架enif
  8. Android-常用代码-36片段
  9. Android获取CPU信息(CPU名字和主频)

随机推荐

  1. [置顶] ANDROID实现IPHONE风格的PICKER
  2. android studio 多渠道打包
  3. Android(安卓)EditText文本输入框禁止输
  4. Android之如何安装(卸载)apk文件到模拟器
  5. [置顶] Android WebKit消息处理(二)Touch
  6. android Intent传递 object , list,list>
  7. 【摘录】 Android中如何修改系统时间(应用
  8. SL4A之Python for Android
  9. Android TabHost的使用
  10. Android : The import java.util cannot b