2013年4月18日星期四

android 截取View畫面並存成圖檔


Android提供了一些API呼叫,
可以簡單的將自己開發的程式畫面存成圖檔。
(自己開發:就是可以拿到View這個類別就對了)

方法一:透過View


drawContent.setDrawingCacheEnabled(true);//drawContent 是一個RelativeLayout
Bitmap b = drawContent.getDrawingCache();
try {
//file是最後輸出的實體路徑
 b.compress(CompressFormat.JPEG, 95, new FileOutputStream(file));
 Toast.makeText("save success",Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) {
 Toast.makeText("save fail",Toast.LENGTH_LONG).show();
}

上方的程式碼是簡單的解釋就是儲存View整個的畫面,
但是有一個重點是...這個View必須要是Visible的。

方法二:透過Canvas

Bitmap tempBitmap = Bitmap.createBitmap(getWidth(),getHeight(), Config.ARGB_4444);//開一個新的圖檔,寬、高、ARGB自訂
Canvas temptCanvas = new Canvas(tempBitmap);//開一個畫布
//開始利用Canvas的API進行繪畫
....
//繪畫結束
temptCanvas.drawBitmap(tempBitmap, 0,0, null);
temptCanvas.save(Canvas.ALL_SAVE_FLAG);
temptCanvas.restore();
try {
//fileName是要輸出的實體路徑
tempBitmap.compress(CompressFormat.JPEG, 95,
new FileOutputStream(fileName));
catch (Exception e) {
e.printStackTrace();
}

第二種方法可以不需要設定Visible也能做到儲存的效果,
至於那一種方法比較好,視個人需要吧!!

PS:
第二種方法因為要透過Bitmap.createBitmap API,所以如果圖片的解析度太高(寬、高的數值太大),很容易發生OutOfMemory Error。

OutOfMemory要解決的話...請自行Google吧!!因為那又可以寫一篇文章了!!


没有评论:

发表评论