drawable 转换为Bitmap: private Bitmap drawableToBitmap(Drawable drawable, int width, int height) { Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); drawable.setBounds(0, 0, width, height); drawable.draw(canvas); return bitmap; }
保存Bitmap,格式可以是png, jpg等:
public enum CompressFormat { JPEG (0), PNG (1), WEBP (2); }
public File saveBitmap(Bitmap bitmap, File directory, String filename, CompressFormat format) { if (directory == null) { directory = context.getCacheDir(); } else { // Check if the given directory exists or try to create it. if (!directory.isDirectory() && !directory.mkdirs()) { return null; } } File file = null; OutputStream os = null; try { filename = (format == CompressFormat.PNG) ? filename + ".png" : filename + ".jpg"; file = new File(directory, filename); os = new FileOutputStream(file); bitmap.compress(format, DEFAULT_COMPRESS_QUALITY, os); } catch (FileNotFoundException e) { e.printStackTrace(); } finally { closeStream(os); } return file; }
简单的保存为png code:
//Context.getFilesDir(),该方法返回/data/data/package name/files的File对象。
try { File file = new File(mContext.getFilesDir(), name+".png"); FileOutputStream fos = new FileOutputStream(file); bitmap.compress(Bitmap.CompressFormat.PNG, 90, fos); fos.close(); } catch (IOException e) { Log.i(TAG, "failed to write PNG", e); }
Bitmap--------> Drawable:
Drawable drawable = new BitmapDrawable(bitmap);