Vb.net 使用imagemagick从visual basic.net转换

Vb.net 使用imagemagick从visual basic.net转换,vb.net,imagemagick,Vb.net,Imagemagick,如何在VB.NET中正确运行imagemagick转换函数 我试着明确地命名每个参数 Public Magick As ImageMagickObject.MagickImage Dim s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11 As String If IsDBNull(FromImage) Then s1 = "" Else s1 = CStr(FromImage) If IsDBNull(Rotate1)

如何在VB.NET中正确运行imagemagick转换函数

我试着明确地命名每个参数

    Public Magick As ImageMagickObject.MagickImage

    Dim s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11 As String

    If IsDBNull(FromImage) Then s1 = "" Else s1 = CStr(FromImage)
    If IsDBNull(Rotate1) Then s2 = "" Else s2 = CStr(FromImage)
    If IsDBNull(Rotate2) Then s3 = "" Else s3 = CStr(FromImage)
    If IsDBNull(Resize1) Then s4 = "" Else s4 = CStr(FromImage)
    If IsDBNull(Resize2) Then s5 = "" Else s5 = CStr(FromImage)
    If IsDBNull(Extra_Imagemagick_settings) Then s6 = "" Else s6 = CStr(FromImage)
    If IsDBNull(Alpha1) Then s7 = "" Else s7 = CStr(FromImage)
    If IsDBNull(Alpha2) Then s8 = "" Else s8 = CStr(FromImage)
    If IsDBNull(Alpha3) Then s9 = "" Else s9 = CStr(FromImage)
    If IsDBNull(Alpha4) Then s10 = "" Else s10 = CStr(FromImage)
    If IsDBNull(ToImage) Then s11 = "" Else s11 = CStr(FromImage)
    Dim params As String() = {s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11}
    Magick.Convert(params)
我尝试创建一个数组:

    Dim params As object() = {FromImage, Rotate1, Rotate2, Resize1, Resize2, Extra_Imagemagick_settings, Alpha1, Alpha2, Alpha3, Alpha4, ToImage}

    params = New Object()
    ReDim params(20)
    params(0) = CStr(FromImage)
    params(1) = Rotate1
    params(2) = Rotate2
    params(3) = Resize1
    params(4) = Resize2
    params(5) = Extra_Imagemagick_settings
    params(6) = Alpha1
    params(7) = Alpha2
    params(8) = Alpha3
    params(9) = Alpha4
    params(10) = ToImage
    Magick.Convert(params)
我试图为“convert()”目录提供参数:

    Magick.Convert(FromImage, Rotate1, Rotate2, Resize1, Resize2, Extra_Imagemagick_settings, Alpha1, Alpha2, Alpha3, Alpha4, ToImage)
每次我有不同的例外情况时,通常:

Object reference not set to an instance of an object.


(可能是因为我不熟悉网络)

主要问题是32/64位

我没有设法使它在100%64位中工作(但我也没有太努力)

  • 创建一个项目
  • 如果您使用的是“vb express”版本,则必须手动编辑*.vbproj文件,并在每个涉及CPU的部分后添加这一行x86(inernet中有大量关于它的帖子)
  • 这个例子取自,它是第一个为我工作的例子(我简化了它)


  • 你是用PInvoke还是包装器调用Imagemagick?我不明白你提到的选项。它是一个COM对象,由“Public Magick As ImageMagickObject.MagickImage”定义。我可能值得一看使用.NET包装器来使用ImageMagic。将
    Public Magick更改为ImageMagickObject.MagickImage
    就足够了,但调用COM可能会变得复杂。
    Use the New keyword to create the instance.
    
    Dim img As ImageMagickObject.MagickImage
    img = New ImageMagickObject.MagickImage
    MSGS = img.Convert("C:\a.bmp", "-resize", "x128", "C:\a.jpg")
    img = Nothing