图像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