2011-10-07 127 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