我正在使用.Net Core。在服务应用程序之一中,我正在使用ImageMagick。 Nuget软件包Magick.NET-Q16-AnyCPU 7.14.3。当我在Windows上本地运行此服务时,下面提到的最后一条日志语句返回count为1,这是正确的,而当我在docker下运行相同的服务时,最后一条日志语句返回0。我认为我缺少一些设置需要为docker环境完成。有人可以建议吗?
public ImageModel CreatePDFPreview(Stream stream)
{
_logger.Information("Creating PDF preview for stream of size {size}", stream.Length);
var settings = new MagickReadSettings();
settings.Density = new Density(300, 300);
using (var images = new MagickImageCollection())
{
stream.Position = 0;
images.Read(stream, settings);
_logger.Information("Images created for the stream, total {count}", images.Count);
}
}
[当我在docker中运行服务时,没有任何异常,只是images.Count
返回为0
。
根据其中一篇文章的建议,我将此添加到了我的项目文件中,很幸运。
<ItemGroup>
<PackageReference Include="Magick.NET-Q16-AnyCPU" Version="7.14.3" />
</ItemGroup>
[是否有可能在docker环境中丢失GhostScript而在本地环境中丢失它?Magick.Net需要此工具才能将PDF转换为图像。检查Convert PDF docs以获取更多信息。据我了解,您正在阅读PDF流,并尝试将其转换为图像?
也请在Magick.Net github上查看有关Ghostscript的评论。确保匹配您的Magick.NET平台(32或64位)。如果仅复制dll,还有一个选项可以设置Ghostscript目录的路径:MagickNET.SetGhostscriptDirectory(@"C:\MyProgram\Ghostscript");
如果Ghsotscript用于商业用途,也有关于许可证的警告。