1. 程式人生 > >Android面試題(24)-有關bitmap的操作

Android面試題(24)-有關bitmap的操作

有關bitmap的操作一直很多,這裡特此總結一下:

public class BitmapTransformUtils {

    //根據圖片uri生成Bitmap物件
public static Bitmap getBitmapByUrl(Context context, Uri uri) {
        if (uri == null)
            return null;
Bitmap bitmap = null;
        try {
            bitmap = BitmapFactory.decodeStream(context.getContentResolver().openInputStream(uri));
} catch (FileNotFoundException e) { e.printStackTrace(); return null; } return bitmap; } //bitmap 轉base64 public static String getBase64ByBitmap(Bitmap bitmap) { ByteArrayOutputStream out = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG
, 100, out); try { out.flush(); out.close(); } catch (IOException e) { e.printStackTrace(); } return Base64.encodeToString(out.toByteArray(), Base64.DEFAULT); } //base64轉成bitmap public static Bitmap getBitmapByBase64(String string) { Bitmap bitmap = null;
try { byte[] bitmapArray; bitmapArray = Base64.decode(string, Base64.DEFAULT); bitmap = BitmapFactory.decodeByteArray(bitmapArray, 0, bitmapArray.length); return bitmap; } catch (Exception e) { e.printStackTrace(); } return null; } //根據本地圖片路徑String轉base64 public static String getFileBase64String(String path) { File file = new File(path); try { FileInputStream in = new FileInputStream(file); ByteArrayOutputStream out = new ByteArrayOutputStream(); int i = in.read(); while (i != -1) { out.write(i); i = in.read(); } return Base64.encodeToString(out.toByteArray(), Base64.DEFAULT); } catch (Exception e) { e.printStackTrace(); } return null; } //載入本地圖片 public static Bitmap getLoacalBitmap(String url) { try { FileInputStream fis = new FileInputStream(url); return BitmapFactory.decodeStream(fis); } catch (FileNotFoundException e) { e.printStackTrace(); return null; } } //將Bitmap儲存在本地 public static void saveBitmap(Context context, Bitmap bitmap) { //首先儲存bitmap File file=new File(Environment.getExternalStorageDirectory(),"bitmap" ); if (!file.exists()){ file.mkdir(); } String filename="bitmap"+".png"; File file1=new File(file,filename); try { FileOutputStream out=new FileOutputStream(file1); bitmap.compress(Bitmap.CompressFormat.PNG,100,out); out.flush(); out.close(); } catch (Exception e) { e.printStackTrace(); } //把檔案插入到系統圖庫 try { MediaStore.Images.Media.insertImage(context.getContentResolver(),file1.getAbsolutePath(),filename,null); } catch (FileNotFoundException e) { e.printStackTrace(); } // 通知相簿更新 context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + "/sdcard/namecard/"))); } //bitmap轉換成byte陣列 /** * bitmap轉換成byte陣列 * * @param bitmap * @param needRecycle * @return */ public static byte[] bitmapToByteArray(Bitmap bitmap, boolean needRecycle) { if (null == bitmap) { return null; } if (bitmap.isRecycled()) { return null; } ByteArrayOutputStream output = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 100, output); if (needRecycle) { bitmap.recycle(); } byte[] result = output.toByteArray(); try { output.close(); } catch (Exception e) { } return result; } }