У меня есть html5 canvas imageData и я хочу сохранить его как векторное изображение (esp или svg) на сервере. Я пытался использовать библиотеки Magick.NET и SVG Rendering Engine, но не смог найти способ преобразовать эти данные изображения в формат векторного изображения. Не могли бы вы поделиться кодом для этой цели. Вот мой код.
public static string UploadImage(string imageData, string userEmail, int quantity)
{
string completePath = @"~\user-images\file.svg";
byte[] byteArray = Convert.FromBase64String(imageData);
//How can i convert this byteArray into vector image array so that i can save it as vector image on spcified path?
using (FileStream fs = new FileStream(HttpContext.Current.Server.MapPath(completePath), FileMode.Create))
{
using (BinaryWriter bw = new BinaryWriter(fs))
{
byte[] data = Convert.FromBase64String(imageData);
bw.Write(data);
bw.Close();
}
}
}
РЕДАКТИРОВАТЬ: я узнал от кого-то, что после создания растрового изображенияДанные нельзя преобразовать в векторное изображение. Итак, вопрос будет заключаться в том, как я могу сохранить html-холст как векторное изображение на сервере без получения растрового изображения.
Итак, на данный момент я попытался использовать библиотеку ткани для создания изображения SVG с помощью метода ткани .toSVG(). Вот код:
var fCanvas = new fabric.Image('c');
var imageurl = myCanvas.toDataURL("image/png"); // this is the origional html canvas that I used to draw images.
fabric.Image.fromURL(imageurl, function (img) {
img.scaleToWidth(fCanvas.width);
fCanvas.add(img);
fCanvas.renderAll();
}, { crossOrigin: 'anonymous' });
//fCanvas.deactivateAll().renderAll();
window.open('data:image/svg+xml;utf8,' + fCanvas.toSVG());
Но в этом случае генерируется пустой вывод. Кто-нибудь может подсказать, где проблема.