首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在代码内部传递xml文件而不是文件夹路径?

如何在代码内部传递xml文件而不是文件夹路径?
EN

Stack Overflow用户
提问于 2019-05-30 17:30:15
回答 1查看 194关注 0票数 0

我尽量不创建文件,而是直接将xml文档传递给SkiaSharp方法Load。我的意思是,有没有办法模仿一条路呢?下面是代码:

代码语言:javascript
复制
public IActionResult svgToPng(string itemId, string mode = "
{
    var svgSrc = new XmlDocument();
    svgSrc.LoadXml(/*Some xml code*/);

    string svgSaveAs = "save file path";
    var quality = 100;

    var svg = new SkiaSharp.Extended.Svg.SKSvg();
    var pict = svg.Load(svgSrc); // HERE, it needs to be a path, not XmlDocument, but i want to pass straight

    var dimen = new SkiaSharp.SKSizeI
    (
        (int) Math.Ceiling(pict.CullRect.Width),
        (int) Math.Ceiling(pict.CullRect.Height)
    );

    var matrix = SKMatrix.MakeScale(1, 1);
    var img = SKImage.FromPicture(pict, dimen, matrix);

    // Convert to PNG
    var skdata = img.Encode(SkiaSharp.SKEncodedImageFormat.Png, quality);
    using(var stream = System.IO.File.OpenWrite(svgSaveAs))
    {
        skdata.SaveTo(stream);
    }

    ViewData["Content"] = "PNG file was created out of SVG.";

    return View(); 
}

Load方法似乎是这样的:

代码语言:javascript
复制
public SKPicture Load(
    using (var stream = File.OpenRead(filename))
    {
        return Load(stream);
    }
}
EN

回答 1

Stack Overflow用户

发布于 2019-05-30 17:48:29

看看这个库的代码:

https://github.com/mono/SkiaSharp.Extended/blob/master/SkiaSharp.Extended.Svg/source/SkiaSharp.Extended.Svg.Shared/SKSvg.cs

看看Load方法,它有多个实现:

代码语言:javascript
复制
public SKPicture Load(string filename)
{
    using (var stream = File.OpenRead(filename))
    {
        return Load(stream);
    }
}

public SKPicture Load(Stream stream)
{
    using (var reader = XmlReader.Create(stream, xmlReaderSettings, CreateSvgXmlContext()))
    {
        return Load(reader);
    }
}

public SKPicture Load(XmlReader reader)
{
    return Load(XDocument.Load(reader));
}

您需要选择其中一个并使用它。现在,没有什么可以阻止您获取代码并为XML字符串添加额外的加载,但是由于这是一个您无法控制的库,所以我将坚持您得到的东西。

你可以使用XmlReader版本,这可能是最接近你想要的版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56375433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档