如何在 C# 中使用 imageMagick

Posted

技术标签:

【中文标题】如何在 C# 中使用 imageMagick【英文标题】:how to use imageMagick with C# 【发布时间】:2011-06-22 12:54:24 【问题描述】:

您能否解释一下我如何将 ImageMagick 与 C# 一起使用。我正在尝试将 PDF 转换为页面为图像。

我想运行 imageMagick 命令“convert -density 300 $input.pdf $output.png”

【问题讨论】:

【参考方案1】:

Magic.Net 是流行库 ImageMagick 的 C# 端口。使用来自 url https://www.nuget.org/packages/Magick.NET-Q16-AnyCPU/ 的 Nuget 包安装 Magick.Net。请注意,Magick.Net 有许多版本,因此请根据您的需要进行选择。这样你就可以使用 C#。见下面的代码

请注意,它将垂直附加图像。同样,您可以水平追加。

using ImageMagick;

string inputPdf= @"C:\my docs\input.pdf";
string outputPng= @"C:\my docs\output.png";

using (MagickImageCollection images = new MagickImageCollection())

    images.Read(inputPdf);
    using (IMagickImage vertical = images.AppendVertically())
        
            vertical.Format = MagickFormat.Png;
            vertical.Density = new Density(300);  
            vertical.Write(outputPng);
        

【讨论】:

【参考方案2】:

最好使用Magick.NET,无需在客户端安装ImageMagick: http://magick.codeplex.com/

【讨论】:

这种方法的问题在于,Magick.NET 需要 GhostScript 将 PDF 转换为图像,而这不是免费的。而且很奇怪,因为在命令行中简单地使用 ImageMagick 不需要 Ghostscript 将 pdf 转换为图像。【参考方案3】:
string arguments = string.Format(@"-density 300 0.pdf 1.png", intputFileName, outputFileName");
var startInfo = new ProcessStartInfo 
    Arguments = arguments,
    Filename = @"C:\path\to\imagick\convert.exe"
;
Process.Start(startInfo).WaitForExit();

参考资料:

ProcessStartInfo Process

【讨论】:

谢谢。有没有办法隐藏命令提示符(停止弹出命令提示符)?再次感谢。很有帮助! 如果你需要隐藏控制台你正在寻找 hstart 工具ntwind.com/software/utilities/hstart.html 试试startInfo.CreateNoWindow = true startInfo.UseShellExecute = false;这个有效,谢谢!谢谢你 1000 次 :)

以上是关于如何在 C# 中使用 imageMagick的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中使用 libcinder?

如何在 C# 中使用 imageMagick

我如何在 webBrowser 中使用 c# 执行点击事件

如何使用 SMO 在存储过程中调用 c# 函数?

如何在打字稿中使用 C# 字典?

如何在 QT 项目中使用 C# 库?