過程分為三步:
1. 将資源ID轉化為Drawable
2. 将Drawable轉化為Bitmap
3. 将Bitmap存儲到Sdcard上
代碼如下:
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
saveDrawableById(R.drawable.p4, "p4.jpg", Bitmap.CompressFormat.JPEG);
}
/**
* 存儲資源為ID的圖檔
* @param id
* @param name
*/
public void saveDrawableById(int id, String name, Bitmap.CompressFormat format) {
Drawable drawable = idToDrawable(id);
Bitmap bitmap = drawableToBitmap(drawable);
saveBitmap(bitmap, name, format);
}
/**
* 将資源ID轉化為Drawable
* @param id
* @return
*/
public Drawable idToDrawable(int id) {
return this.getResources().getDrawable(R.drawable.p4);
}
/**
* 将Drawable轉化為Bitmap
* @param drawable
* @return
*/
public Bitmap drawableToBitmap(Drawable drawable) {
if(drawable == null)
return null;
return ((BitmapDrawable)drawable).getBitmap();
}
/**
* 将Bitmap以指定格式儲存到指定路徑
* @param bitmap
* @param path
*/
public void saveBitmap(Bitmap bitmap, String name, Bitmap.CompressFormat format) {
// 建立一個位于SD卡上的檔案
File file = new File(Environment.getExternalStorageDirectory(),
name);
FileOutputStream out = null;
try{
// 打開指定檔案輸出流
out = new FileOutputStream(file);
// 将位圖輸出到指定檔案
bitmap.compress(format, ,
out);
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}