c# - C# : Get byte array from Convert call? 中的 ImageMagick

标签 c# .net com imagemagick

我正在尝试使用 ImageMagick 的 Windows Installer 提供的 ImageMagickObject COM 组件,作为 COM 引用导入到我的 C# 项目中。到目前为止,我已经能够使用它将图像从磁盘上的一个文件转换为磁盘上的另一个文件。我试图让它转换内存中的文件并将其返回到字节数组中,如库中包含的 ArrayTest.vbs 文件所示。以前有人成功做过吗?严重缺乏关于此功能的文档...

我的代码:

MagickImageClass _magic = new MagickImageClass();
object[] myarray = new object[1];
myarray[0] = "JPEG:";

object[] args = new object[] { tbFilename.Text, "-colorspace", "cmyk", "-resize", "50%", myarray };
var result = _magic.Convert(ref args);

他们来自 ArrayTest.vbs 的示例:

Dim img
Dim myarray(1)

Set img = CreateObject("ImageMagickObject.MagickImage.1")
myarray(0)="8BIM:"

msgs = img.Convert("null:","-profile","8BIMTEXT:iptctext.txt",myarray)

如果您不熟悉 ImageMagick,“null:”是指定空图像的内置类型。 “-profile”和“8BIM:iptctext.txt”是传递给 Convert 调用的命令行参数,我的数组本质上是输出。在他们的示例中,myarray 以新转换的图像的字节数组结束。在我的代码中,myarray 没有改变。帮忙!!

最佳答案

ImageMagickObject 旨在为大多数 ImageMagick 二进制文件提供等效的功能,而无需创建进程来执行二进制文件的开销。在“Convert”的情况下,成功的情况下没有预期的输出(或ImageMagickObject返回值)。

据我所知,如果您希望从 C# 中获得此功能,您有两种选择:

  1. 将图像转换为临时文件,然后使用 GDI+ Graphics 读取它.
  2. 为 ImageMagick 的 C++ API 创建一个 .NET 包装器。您可以通过查看 ImageMagickNET 获得良好的开端。 .

关于c# - C# : Get byte array from Convert call? 中的 ImageMagick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4682967/

相关文章:

.net - 如果我从未在我的程序中引用过 System.IO,为什么我的用户会收到错误消息?

windows - OCX 的入口点

c# - 如何在不指定任何类型参数的情况下创建构造泛型类型

c++ - CComBSTR内存分配

c++ - COM 函数产生不会消失的线程

c# - 在 Web Api 项目中读取 CollectionJson 内容

c# - 将路径拆分为列表

c# - Interlocked.CompareExchange 也应该是一个 volatile 变量吗?

c# - 传递给 lock 关键字的是什么?

c# - 如何制作我的应用程序单例应用程序?