Imagemagick 将.Net位图()转换为MagickImage

Imagemagick 将.Net位图()转换为MagickImage,imagemagick,Imagemagick,从ImageMagick 7.17升级到7.22.2.1 NuGet会导致MagickImage的构造函数出现以下错误。我不能确定更换的方法。帮我找到文件。谢谢, 参数1:无法从“System.Drawing.Bitmap”转换为“byte[]” 代码: 位图读取器已移动到Magic.NET.SystemDrawing var m = new MagickFactory(); MagickImage image = new MagickImage(m.Image.Create(objImage)

从ImageMagick 7.17升级到7.22.2.1 NuGet会导致MagickImage的构造函数出现以下错误。我不能确定更换的方法。帮我找到文件。谢谢,

参数1:无法从“System.Drawing.Bitmap”转换为“byte[]”

代码:


位图读取器已移动到Magic.NET.SystemDrawing

var m = new MagickFactory();
MagickImage image = new MagickImage(m.Image.Create(objImage));

我才刚刚开始使用它,所以这可能不是很好的代码,但到目前为止它对我很有效

public static Bitmap ToBitmap(this IMagickImage mimg, MagickFormat fmt = MagickFormat.Png24)
{
    Bitmap bmp = null;
    using (MemoryStream ms = new MemoryStream())
    {
        mimg.Write(ms, fmt);
        ms.Position = 0;
        bmp = (Bitmap)Bitmap.FromStream(ms);
    }
    return bmp;
}
public static IMagickImage ToMagickImage(this Bitmap bmp)
{
    IMagickImage img = null;
    MagickFactory f = new MagickFactory();
    using (MemoryStream ms = new MemoryStream())
    {
        bmp.Save(ms, ImageFormat.Bmp);
        ms.Position = 0;
        img = new MagickImage(f.Image.Create(ms));
    }
    return img;
}

某些ImageMagick操作在写入流时似乎需要不同的格式,因此您可能需要使用
fmt
参数。

Hi Hintz。这是一个解决方案吗?我不明白。这不起作用-m.Image.Create不接受BitMap类型的参数您需要将此软件包与其他标准软件包一起安装才能起作用。请参阅
public static Bitmap ToBitmap(this IMagickImage mimg, MagickFormat fmt = MagickFormat.Png24)
{
    Bitmap bmp = null;
    using (MemoryStream ms = new MemoryStream())
    {
        mimg.Write(ms, fmt);
        ms.Position = 0;
        bmp = (Bitmap)Bitmap.FromStream(ms);
    }
    return bmp;
}
public static IMagickImage ToMagickImage(this Bitmap bmp)
{
    IMagickImage img = null;
    MagickFactory f = new MagickFactory();
    using (MemoryStream ms = new MemoryStream())
    {
        bmp.Save(ms, ImageFormat.Bmp);
        ms.Position = 0;
        img = new MagickImage(f.Image.Create(ms));
    }
    return img;
}