2011-10-07 75 views
0

圖像URL我有以下代碼:指定帆布

canvas.drawBitmap (mBitmap, 0, 0,null); 

如何我做mBitmap如PATH或從SD卡中的圖片?所以當我保存畫布時,它會保存來自該URL的圖像?

非常感謝您的幫助! :)

回答

1

如果它是一個URL,則需要下載字節流並保存,然後使用BitmapFactory將其解碼爲位圖對象。

這樣的例子可以發現here

這同樣適用於一個文件,但你可以使用BitmapFactory.decodeFile(...)

+0

感謝您的回覆@Matthew Shea,如果這是一條道路,那該怎麼辦? – Emkey

+1

你的意思是在SD卡上?只需使用BitmapFactory.decodeFile(...)。這需要通過電話。 –

+0

@Emkey他是對的 – Siten

0

你不能這樣做,除非你爲你的目的創建一個自定義的CustomCanvas類。無論如何,您仍然需要在draw之前下載&緩存映像。

+0

感謝您的respons @xjaphx,怎麼樣自定義畫布,你的意思是我要創建兩個帆布,一個用於BG圖像和一個用戶的繪圖? – Emkey

0

這裏是一個tutorial that does this

要點的鏈接:

啓用繪圖緩存:

setDrawingCacheEnabled(true); 

映射畫布上的位圖:

 canvas = mSurfaceHolder.lockCanvas(null); 
     if(mBitmap == null){ 
     mBitmap = Bitmap.createBitmap (1, 1, Bitmap.Config.ARGB_8888);; 
     } 
     final Canvas c = new Canvas (mBitmap); 
     c.drawColor(0, PorterDuff.Mode.CLEAR); 
     commandManager.executeAll(c); 
     canvas.drawBitmap (mBitmap, 0, 0,null); 

保存圖像:

final FileOutputStream out = new FileOutputStream(new File(APP_FILE_PATH + "/myAwesomeDrawing.png")); 
     nBitmap.compress(Bitmap.CompressFormat.PNG, 90, out); 
     out.flush(); 
     out.close(); 
+0

感謝您的回覆@Reno,這會保存圖片+用戶的圖紙嗎? – Emkey

+0

我實際上是遵循該教程,感謝您指出了這一點。 – Emkey