如何使用cefsharp从嵌入式资源中使用图像?

时间:2017-03-01 15:52:57

标签: c# cefsharp

我正在努力弄清楚如何使用自定义方案处理程序和cefsharp从嵌入式资源加载图像。我目前正在使用它加载html,css和js文件没有问题,但是当试图加载图像时我总是得到破碎的图像指示器。 (开发工具也无法显示响应)我发现cefsharp.example for ResourceHandler的默认示例没有正确处理超过32KB的任何内容,因此我做了一个小的更改,以便它不会剪切超过32KB的文件,但无论如何对于我试图用作嵌入式资源的任何图像,我仍然会看到破碎的图像。

以下是IResourceHandler所需的ProcessRequest方法。

public bool ProcessRequest(IRequest request, ICallback callback)
        {
            // The 'host' portion is entirely ignored by this scheme handler.
            //Replace internal with our assembly namespacing:
            var url = request.Url.Replace("internal://", "MyAssembly.Html.").TrimEnd('/');

            fileName = url.Replace('/', '.');
            byte[] bytes = null;

            var assembly = Assembly.GetExecutingAssembly();
            using (Stream embeddedFileStream = assembly.GetManifestResourceStream(fileName))
            {
                if (embeddedFileStream != null)
                {
                    using (StreamReader reader = new StreamReader(embeddedFileStream))
                    {
                        bytes = Encoding.UTF8.GetBytes(reader.ReadToEnd());
                    }
                }
            }

            if (bytes == null)
            {
                callback.Dispose();
            }
            else
            {
                Task.Run(() =>
                {
                    using (callback)
                    {
                        stream = new MemoryStream(bytes);
                        var fileExtension = Path.GetExtension(fileName);
                        mimeType = ResourceHandler.GetMimeType(fileExtension);

                        callback.Continue();
                    }
                });

                return true;
            }

            return false;
        }

如上所述,这适用于html,js,css文件,但不适用于任何类型的图像。在这一点上,我迷失了什么。任何帮助将不胜感激。

0 个答案:

没有答案