在Mac OS X上使用System.Drawing.Common将BMP转换为TIFF

汤姆·科登霍夫

我正在尝试System.Drawing.Common在Mac OS上使用以下C#代码(.NET CORE 3.1)将BMP图像转换为tiff图像

        public void SaveBitmapAsTiff(string location, Bitmap image)
        {

            var imageCodecInfo = GetEncoderInfo("image/tiff");
            var encoder = Encoder.Compression;
            var encoderParameters = new EncoderParameters(1);
            
            var encoderParameter = new EncoderParameter(
                encoder,
                (long)EncoderValue.CompressionLZW);
            encoderParameters.Param[0] = encoderParameter;
            location = location.Replace(".bmp", "");
            image.Save(location + ".tiff", imageCodecInfo, encoderParameters);
            // image.Save(location + ".tiff", ImageFormat.Tiff); Also tried this method overload
        }
        
        private static ImageCodecInfo GetEncoderInfo(string mimeType)
        {
            int j;
            ImageCodecInfo[] encoders;
            encoders = ImageCodecInfo.GetImageEncoders();
            for(j = 0; j < encoders.Length; ++j)
            {
                if(encoders[j].MimeType == mimeType)
                    return encoders[j];
            }
            return null;
        }

location参数包含我们要写入的文件路径和image参数包含我们从磁盘加载位图。

当我尝试运行此代码时,出现以下异常:

Unhandled exception. System.NotImplementedException: Not implemented.
   at System.Drawing.SafeNativeMethods.Gdip.CheckStatus(Int32 status)
   at System.Drawing.Image.Save(String filename, ImageCodecInfo encoder, EncoderParameters encoderParams)
   at System.Drawing.Image.Save(String filename, ImageFormat format)
   at BmpTiffConverter.Services.FileService.SaveBitmapAsTiff(String location, Bitmap image) in /Users/tomcoldenhoff/Documents/ReSoftware/Repositories/BmpTiffConverter/BmpTiffConverter/Services/FileService.cs:line 54
   at BmpTiffConverter.Services.ConverterService.ConvertBmpToTiff(String inputPath, String outputPath) in /Users/tomcoldenhoff/Documents/ReSoftware/Repositories/BmpTiffConverter/BmpTiffConverter/Services/ConverterService.cs:line 20

我的谷歌搜索建议我只好装libgdiplus我已经与做brew install mono-libgdiplusbrew upgrade mono-libgdiplus

我还通过安装runtime.osx.10.10-x64.CoreCompat.System.Drawing软件包尝试了@Andy的建议答案,不幸的是这没有用。

有人有其他建议吗?

安迪

问题是mono-libgdiplus没有实现EncoderValue.CompressionLZW编码器参数。我建议不要使用该库,而是安装此nuget包:

Mac OS的libgdiplus

runtime.osx.10.10-x64.CoreCompat.System.Drawing

一旦添加了该软件包,您的代码就可以完美运行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将System :: Drawing :: Bitmap ^转换为:: MAT

来自分类Dev

在Mac OS X上的TFS

来自分类Dev

在Mac OS X上卸载?

来自分类Dev

Mac OS X上的Python

来自分类Dev

在Mac OS X上将C int转换为char数组

来自分类Dev

Mac OS X:将常规F键转换为媒体键

来自分类Dev

在Mac OS上使用Tuareg(OCaml)将utop与emacs集成

来自分类Dev

如何使用Homebrew在Mac OS X 10.10.2上安装R?

来自分类Dev

在Mac OS X上使用java命令运行DynamoDB Local

来自分类Dev

在Mac OS X上使用pip安装pyopencv

来自分类Dev

无法在Mac OS X上使用NPM安装Cordova

来自分类Dev

使用Mac OS X上的键盘关闭pyplot图

来自分类Dev

使用sed在Mac OS X上删除回车

来自分类Dev

在Mac OS X 10.9(Mavericks)上使用macports安装opencv

来自分类Dev

在Mac OS X上使用SWIG为JavaScript编译C ++

来自分类Dev

使用Homebrew在Mac OS X上安装libRmath

来自分类Dev

在OS X / Mac上使用Windows蓝牙API?

来自分类Dev

在Mac OS X上使用gstreamer的Pocketsphinx。AudioUnitRender返回-10863

来自分类Dev

PHP在Mac OS X上不使用更新的OpenSSL

来自分类Dev

在Mac OS X上使用Conda安装pyzbar时出错

来自分类Dev

如何在Mac OS X上使用Windows键盘?

来自分类Dev

在Mac OS X上使用cron截屏

来自分类Dev

无法在Mac OS X上使用NPM安装Cordova

来自分类Dev

Mac OS X上的MetaTrader 4与C ++或R结合使用

来自分类Dev

阻止某些程序在Mac OS X 10.10上使用VPN

来自分类Dev

使用sed在Mac OS X上删除回车

来自分类Dev

如何使用XCode在Mac OS X上删除char *数组?

来自分类Dev

在Mac OS X 10.9(Mavericks)上使用macports安装opencv

来自分类Dev

使用Homebrew在Mac OS X上安装libRmath