【发布时间】:2020-08-27 15:12:39
【问题描述】:
我正在尝试使用System.Drawing.Common 在 Mac 操作系统上使用以下 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-libgdiplus 和 brew upgrade mono-libgdiplus 安装了。
我还通过安装runtime.osx.10.10-x64.CoreCompat.System.Drawing 软件包尝试了@Andy 的建议答案,不幸的是这不起作用。
有人有其他建议吗?
【问题讨论】:
-
您使用的是哪个 dotnet 核心版本?
-
@TreviAwater 我正在使用 3.1,我也编辑了帖子
-
我可以成功调用 Save 但不能为多个帧调用 SaveAdd ......我似乎无法弄清楚。
-
这个问题帮我解决了错误
the type initializer for 'gdip' threw an exception
标签: c# macos .net-core tiff bmp