是否有任何可能的方法将 android Canvas 保存为 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();
}
我想将 Canvas 保存为 svg 格式?
最佳答案
不清楚你的意思是要将 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
您可能指的另一件事是记录 Canvas 2D 绘图命令(例如 Canvas.drawRect()
)并从中生成 SVG 文件。这在技术上是可行的,但我不知道有任何工具或库可以做到这一点。
关于android - 如何将android Canvas 保存为svg?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31808832/