C# TIF压缩CCITT4

C# TIF压缩CCITT4,c#,compression,tiff,image-compression,C#,Compression,Tiff,Image Compression,我正在尝试用CCITT4压缩tiff文件。原始大小为101 KB,运行后大小稍微减小98 KB。我的限制大小为50 KB,如何使大小低于我的限制?代码如下 我的极限; 大小由于源图像似乎是彩色图像(恰好看起来像黑白),并且其尺寸需要调整为最大值,因此您需要: 按比例重新定义源图像的大小,设置转换图像需要遵守的最大宽度和高度限制 将图像转换为1bpp索引的格式:该方法提供了定义源图像新大小和设置特定大小的方法(PixelFormat.format1bppinged,在本例中)。内部转换方法相当好,

我正在尝试用CCITT4压缩tiff文件。原始大小为101 KB,运行后大小稍微减小98 KB。我的限制大小为50 KB,如何使大小低于我的限制?代码如下

我的极限;
大小由于源图像似乎是彩色图像(恰好看起来像黑白),并且其尺寸需要调整为最大值,因此您需要:

  • 按比例重新定义源图像的大小,设置转换图像需要遵守的最大宽度和高度限制
  • 将图像转换为
    1bpp索引的
    格式:该方法提供了定义源图像新大小和设置特定大小的方法(
    PixelFormat.format1bppinged
    ,在本例中)。内部转换方法相当好,得到的图像质量通常是一个很好的折衷方案
  • 定义:由于图像将转换为黑白图像,因此其质量最初可以设置为最大值(
    100
    )。如果最终图像字节数不符合要求(
    50KB
    ),则可以重复该过程
  • 使用CCTII第4组
  • ,使用TIFF格式编码器,将其保存到
    MemoryStream
    以供进一步处理
  • 问题中提供的示例图像在保存到文件时,其大小(以字节为单位)从初始的
    94600
    字节减少到
    6786
    字节,质量最高

    File.WriteAllBytes("[Image Path].tiff", imageStream.ToArray());
    
    converttobTiffImageStream()
    方法可称为:

    var maximumWidthAndHeight = new Size(1024, 768);
    int quality = 100;
    var compression = EncoderValue.CompressionCCITT4;
    var imageStream = ConvertToBWTiffImageStream(sourceImage, maximumWidthAndHeight, quality, compression);
    
    请注意,
    MaximumWidth和Height
    指定最大宽度和最大高度,而不是图像的新大小(否则会失真)。图像大小根据这些值按比例缩放


    ► 请记住添加以下内容:
    使用ImageCodec=System.Drawing.Imaging.Encoder

    (GetImageMaxSize()
    方法是半哑的,我稍后会修复它)


    由于源图像似乎是彩色图像(恰好看起来像黑白),并且其尺寸需要调整为最大值,因此您需要:

  • 按比例重新定义源图像的大小,设置转换图像需要遵守的最大宽度和高度限制
  • 将图像转换为
    1bpp索引的
    格式:该方法提供了定义源图像新大小和设置特定大小的方法(
    PixelFormat.format1bppinged
    ,在本例中)。内部转换方法相当好,得到的图像质量通常是一个很好的折衷方案
  • 定义:由于图像将转换为黑白图像,因此其质量最初可以设置为最大值(
    100
    )。如果最终图像字节数不符合要求(
    50KB
    ),则可以重复该过程
  • 使用CCTII第4组
  • ,使用TIFF格式编码器,将其保存到
    MemoryStream
    以供进一步处理
  • 问题中提供的示例图像在保存到文件时,其大小(以字节为单位)从初始的
    94600
    字节减少到
    6786
    字节,质量最高

    File.WriteAllBytes("[Image Path].tiff", imageStream.ToArray());
    
    converttobTiffImageStream()
    方法可称为:

    var maximumWidthAndHeight = new Size(1024, 768);
    int quality = 100;
    var compression = EncoderValue.CompressionCCITT4;
    var imageStream = ConvertToBWTiffImageStream(sourceImage, maximumWidthAndHeight, quality, compression);
    
    请注意,
    MaximumWidth和Height
    指定最大宽度和最大高度,而不是图像的新大小(否则会失真)。图像大小根据这些值按比例缩放


    ► 请记住添加以下内容:
    使用ImageCodec=System.Drawing.Imaging.Encoder

    (GetImageMaxSize()
    方法是半哑的,我稍后会修复它)


    这些是黑白图像,对吗?对,黑白图像,还有我的尺寸限制(1766915)源图像像素格式设置为什么?你试过RLE压缩吗?您是只需要字节数组还是生成新映像?在这种情况下,生成新图像后的像素格式是什么?此外,第4组生成的图像质量非常低。你确定要这个吗?你是否需要这些图像具有TIFF格式,或者其他格式也可以(如果你更关心压缩)?确切地说,我不知道源图像像素格式,首先我调整源图像大小并克隆它,然后运行压缩算法。我需要在最后的字节数组,但不要尝试RLE压缩,我应该用CCITT4压缩结果文件。我可以使用PixelFormat缩小尺寸吗?这些是黑白图像,对吗?对,黑白图像,还有尺寸限制(1766915)。源图像PixelFormat设置为什么?你试过RLE压缩吗?您是只需要字节数组还是生成新映像?在这种情况下,生成新图像后的像素格式是什么?此外,第4组生成的图像质量非常低。你确定要这个吗?你是否需要这些图像具有TIFF格式,或者其他格式也可以(如果你更关心压缩)?确切地说,我不知道源图像像素格式,首先我调整源图像大小并克隆它,然后运行压缩算法。我需要在最后的字节数组,但不要尝试RLE压缩,我应该用CCITT4压缩结果文件。我可以使用像素格式来缩小尺寸吗?