Magick.NET升级至11.2.1后AddProfile方法无法访问如何解决
问题原因
Magick.NET 从7.x版本迭代到11.x版本时,对配置文件(Profile)相关API做了破坏性调整:原支持直接传入IImageProfile类型实例(如ExifProfile、ColorProfile等强类型配置对象)的单参数AddProfile重载已被移除,你当前查到的三参数AddProfile是仅支持传入原始字节数据的重载,因此直接传入ExifProfile1实例的旧写法会被编译器提示方法不存在。AddNoise方法可正常识别是因为该方法签名在版本迭代中未做破坏性变更,不属于引用缺失或包安装错误问题。
正确调用方式
根据你传入参数的类型,分两种场景调用:
- 传入
ExifProfile等强类型配置实例(对应你当前代码里的ExifProfile1场景)
直接使用保留的SetProfile方法替换原AddProfile调用即可,方法接收所有实现了IImageProfile接口的配置类型实例:
using (MagickImage image = new MagickImage(sFileIn)) { // 替换原有image.AddProfile(ExifProfile1)写法 image.SetProfile(ExifProfile1); // 其余原有业务逻辑 }
- 传入原始字节格式的配置数据(对应你查到的三参数
AddProfile重载场景)
该重载仅用于直接传入未封装的配置原始字节,三个参数依次为配置名称、配置原始字节数组、数据长度,调用示例:
// 示例:读取本地EXIF配置文件的原始字节 byte[] profileData = File.ReadAllBytes("exif_config.bin"); image.AddProfile("exif", profileData, profileData.Length);
注意事项
- 不要用三参数
AddProfile传入强类型配置对象,该方法不会自动解析ExifProfile等封装类型,会直接抛出参数类型不匹配错误 - 所有强类型配置实例(ExifProfile、IptcProfile、XmpProfile、ColorProfile等)的写入统一使用
SetProfile方法
内容的提问来源于stack exchange,提问作者Arthur Rees
相关产品推荐
相关产品推荐

