什麼是bitmap?
位圖(Bitmap),又稱柵格圖(英語:Raster graphics)或點陣圖,是使用像素陣列(Pixel-array/Dot-matrix點陣)來表示的圖像。
只要知道,在安卓中,我們常用他來表示圖片就可以了。
如何創建一個指定樣式的bitmap?
通常,這個問題有很多種解法,常用的是Bitmap.createBitmap方法的多重重載,也可使用本人的博客:Android手寫簽名繪製
Android的文件操作
Android中可以在設備本身的存儲設備或外接的存儲設備中創建用於保存數據的文件。在默認狀態下,文件是不能在不同程序間共享的,當用戶卸載應用程序時,這些文件刪除。
文件存儲數據可以通過openFileOutput方法打開一個文件(如果這個)文件不存在就自動創建這個文件),通過load方法來獲取文件中的數據,通過deleteFile方法刪除一個指定的文件。
將bitmap保存到本地的代碼
private void savebitmap()
{
//因爲xml用的是背景,所以這裏也是獲得背景
Bitmap bitmap=((BitmapDrawable)(imageView.getBackground())).getBitmap();
//創建文件,因爲不存在2級目錄,所以不用判斷exist,要保存png,這裏後綴就是png,要保存jpg,後綴就用jpg
File file=new File(Environment.getExternalStorageDirectory() +"/mfw.png");
try {
//文件輸出流
FileOutputStream fileOutputStream=new FileOutputStream(file);
//壓縮圖片,如果要保存png,就用Bitmap.CompressFormat.PNG,要保存jpg就用Bitmap.CompressFormat.JPEG,質量是100%,表示不壓縮
bitmap.compress(Bitmap.CompressFormat.PNG,100,fileOutputStream);
//寫入,這裏會卡頓,因爲圖片較大
fileOutputStream.flush();
//記得要關閉寫入流
fileOutputStream.close();
//成功的提示,寫入成功後,請在對應目錄中找保存的圖片
Toast.makeText(MainActivity.this,"寫入成功!目錄"+Environment.getExternalStorageDirectory()+"/mfw.png",Toast.LENGTH_SHORT).show();
} catch (FileNotFoundException e) {
e.printStackTrace();
//失敗的提示
Toast.makeText(MainActivity.this,e.getMessage(),Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
//失敗的提示
Toast.makeText(MainActivity.this,e.getMessage(),Toast.LENGTH_SHORT).show();
}
}
注意事項
- 保存bitmap到本地是一個耗時操作,儘量不要在ui線程中操作。
- 保存到本地後,除非重啓手機/相冊掃描文件,否則不會自動添加到相冊中,也就是僅能通過文件夾或代碼讀取,找到他,可以使用廣播來通知。通知代碼如下:
Uri uri = Uri.fromFile(file);
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri));
- 需要保存文件的權限(在AndroidManifest文件中配置)
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
支持我
您的支持,就是我創作的最大動力