圖像URL我有以下代碼:指定帆布
canvas.drawBitmap (mBitmap, 0, 0,null);
如何我做mBitmap
如PATH或從SD卡中的圖片?所以當我保存畫布時,它會保存來自該URL的圖像?
非常感謝您的幫助! :)
圖像URL我有以下代碼:指定帆布
canvas.drawBitmap (mBitmap, 0, 0,null);
如何我做mBitmap
如PATH或從SD卡中的圖片?所以當我保存畫布時,它會保存來自該URL的圖像?
非常感謝您的幫助! :)
如果它是一個URL,則需要下載字節流並保存,然後使用BitmapFactory將其解碼爲位圖對象。
這樣的例子可以發現here
這同樣適用於一個文件,但你可以使用BitmapFactory.decodeFile(...)
你不能這樣做,除非你爲你的目的創建一個自定義的CustomCanvas
類。無論如何,您仍然需要在draw
之前下載&緩存映像。
感謝您的respons @xjaphx,怎麼樣自定義畫布,你的意思是我要創建兩個帆布,一個用於BG圖像和一個用戶的繪圖? – Emkey
要點的鏈接:
啓用繪圖緩存:
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();
感謝您的回覆@Matthew Shea,如果這是一條道路,那該怎麼辦? – Emkey
你的意思是在SD卡上?只需使用BitmapFactory.decodeFile(...)。這需要通過電話。 –
@Emkey他是對的 – Siten