有没有办法将android画布保存为svg。我知道怎么把它保存为png / jpeg。我目前正在将其保存为jpeg。这是我现在用来保存的代码。
canvas.setDrawingCacheEnabled(true);
canvas.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH);
Bitmap bitmap = canvas.getDrawingCache();
String path = Environment.getExternalStorageDirectory().getAbsolutePath();
File file = new File(path+"/image.jpg");
FileOutputStream ostream;
try {
file.createNewFile();
ostream = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, ostream);
ostream.flush();
ostream.close();
Toast.makeText(getApplicationContext(), "image saved", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(), "error", Toast.LENGTH_SHORT).show();
}
我希望画布保存为svg?
答案 0 :(得分:1)
目前尚不清楚您是想将Bitmap保存为SVG,还是想将Canvas保存为SVG。它们不一定是相同的东西。从您的示例代码中,您听起来像是要保存位图。
保存位图
正如Der Gollum所说,将位图保存为SVG不会给你什么。 SVG是一种矢量格式。您可以将位图图像放在SVG中,如下例所示(假设图像为640x480)。 SVG文件只是XML,因此您可以生成以下内容:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="640px" height="480px">
<image width="640" height="480"
xlink:href="data:image/jpeg;base64,...base64 encoded image data here..."/>
</svg>
你有一个SVG文件,但它仍然只是一个位图。这与在PDF文件中包含JPEG图像相同。
可以使用工具跟踪位图并生成矢量图像。但这是一个难题,而这样做的工具(如“potrace”)通常不会产生可以在没有手动调整的情况下使用的结果。
保存画布
您可能指的另一件事是录制Canvas 2D绘图命令(例如Canvas.drawRect()
)并从中生成SVG文件。这在技术上是可行的,但我不知道存在任何存在的工具或库。