Skip to main content
 首页 » 编程设计

c#之ImageMagick 不能在 docker 环境中工作

2024年02月04日34shangdawei

我正在使用 .Net Core。在其中一个服务应用程序中,我正在使用 ImageMagick。 Nuget 包 Magick.NET-Q16-AnyCPU 7.14.3。当我在 Windows 上本地运行此服务时,下面提到的最后一条日志语句返回计数为 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> 

请您参考如下方法:

任何你错过的机会GhostScript在 docker 环境中并将其放在本地环境中? Magick.Net 需要此工具才能将 PDF 转换为图像。 检查Convert PDF docs获取更多信息。 据我了解,您正在阅读 PDF 流并尝试将其转换为图像吗?

此外,请查看 Magick.Net github 上有关 Ghostscript 的评论. 确保匹配您的 Magick.NET 平台(32 位或 64 位)。如果只复制 dll,还有一个选项可以设置 Ghostscript 目录的路径,例如: MagickNET.SetGhostscriptDirectory(@"C:\MyProgram\Ghostscript"); 如果 Ghsotscript 用于商业用途,则还有关于许可证的警告。