gpt4 book ai didi

c# - 使用.net c# 将图像从 jpg 转换为特定的 TIFF 格式

转载 作者:行者123 更新时间:2023-12-02 02:40:15 24 4
gpt4 key购买 nike

我正在尝试将图像发送到 AS-400,但它只接受 TIFF 图像。我正在转换它们,但随后它提示

错误提示“无法识别的 tiff 标签...”前两个是 317 和 531另外:“对于错误代码 X'8F0E' 和 X'8F0F',检测到不符合解压缩算法规则的位模式。无法进一步解压缩。验证输入数据的数据完整性流并再次尝试请求。”

我有一个可以使用的 tiff 文件,这是它的详细信息: enter image description here

我正在使用我修改过的 MSDN 代码。下面的代码可以工作,但我现在需要在编码器中有超过 1 个参数。

                Bitmap myBitmap;
ImageCodecInfo myImageCodecInfo;
Encoder myEncoder;
EncoderParameter myEncoderParameter;
EncoderParameters myEncoderParameters;

// Create a Bitmap object based on a BMP file.
myBitmap = new Bitmap(@"f:\testFromBlob.jpg");
// Get an ImageCodecInfo object that represents the TIFF codec.
myImageCodecInfo = GetEncoderInfo("image/tiff");
//do the actual work
myEncoder = Encoder.Compression;
myEncoderParameters = new EncoderParameters(1);
myEncoderParameter = new EncoderParameter(myEncoder,(long)EncoderValue.CompressionCCITT4);
myEncoderParameters.Param[0] = myEncoderParameter;
myBitmap.Save(@"f:\resultFromDotNet.tiff", myImageCodecInfo, myEncoderParameters);


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;
}

我对图像文件不感兴趣。谁能告诉我如何进行与测试图像中的设置相匹配的转换?

我尝试将位深度更改为 1 以及压缩,不确定,但我认为可能需要同时更改。

更新 - 使用Magick我可以使用

转换为工作格式

magick convert image01.jpg -compress Group4 tiff3.tiff

如果这对我走上 C#/.Net 的正确轨道有帮助的话

更新 2:上面的代码可以工作,但我需要知道如何更改多个参数而不是仅更改一个参数。我认为这可能会是本垒打。

更新3:我有多个参数正在工作,将其发布在这里以防对其他人有帮助。现在只需要等待客户进来,看看这是否适合他们!

此处是 MS 文档的链接,可供引用

https://learn.microsoft.com/en-us/dotnet/api/system.drawing.imaging.encoder.colordepth?view=netframework-4.8

            Bitmap myBitmap;
ImageCodecInfo myImageCodecInfo;
Encoder compressionEncoder;
Encoder colorDepthEncoder;
EncoderParameter compressionParameter;
EncoderParameter colorDepthParameter;
EncoderParameters myEncoderParameters;

// Create a Bitmap object based on a BMP file.
myBitmap = new Bitmap(@"f:\colorTest.jpg");

// Get an ImageCodecInfo object that represents the TIFF codec.
myImageCodecInfo = GetEncoderInfo("image/tiff");
//do the actual work
compressionEncoder = Encoder.Compression;
myEncoderParameters = new EncoderParameters(2);
compressionParameter = new EncoderParameter(compressionEncoder,(long)EncoderValue.CompressionCCITT4);

colorDepthEncoder = Encoder.ColorDepth;
colorDepthParameter = new EncoderParameter(colorDepthEncoder, 24L); //if needed this can be removed

myEncoderParameters.Param[0] = compressionParameter;
myEncoderParameters.Param[1] = colorDepthParameter;
myBitmap.Save(@"f:\resultFromDotNet1bit.tiff", myImageCodecInfo, myEncoderParameters);

最佳答案

在原始代码示例中 - 您需要将参数 Encoder.Compression 设置为 EncoderValue.CompressionCCITT4,而不是 Encoder.ColorDepth。

关于c# - 使用.net c# 将图像从 jpg 转换为特定的 TIFF 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60287457/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com