【发布时间】:2023-03-14 05:40:02
【问题描述】:
我正在尝试使用 CCITT4 压缩 tiff 文件。原始大小 101 KB,运行后大小减少了一点 98 KB。我的限制大小为 50 KB,我怎样才能使大小低于我的限制?代码如下
我的极限; 大小 图像宽度:1766 – 1890 像素 图片长度:915 – 1040 像素
谢谢大家。 Image Sample
public static Byte[] CompressBitmap(Bitmap img)
{
Bitmap bm = img;
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();
ImageCodecInfo ici = null;
foreach (ImageCodecInfo codec in codecs)
{
if (codec.MimeType == "image/tiff")
ici = codec;
}
EncoderParameters ep = new EncoderParameters(1);
ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.SaveFlag,
(long)EncoderValue.Flush);
ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Compression,
(long)EncoderValue.CompressionCCITT4);
using (var stream = new MemoryStream())
{
bm.Save(stream, ici, ep);
return stream.ToArray();
}
}
【问题讨论】:
-
这些是黑白图像吧?
-
右,黑白图像,我也有尺寸限制(1766、915)
-
源 Image PixelFormat 设置为什么?您是否尝试过 RLE 压缩?您只需要字节数组还是生成新图像?这种情况下,新Image生成后的PixelFormat是什么?
-
另外,第 4 组生成的图像质量相当低。你确定要这个吗?您是否需要这些图像具有 TIFF 格式,或者其他格式也可以(如果您更关心压缩)?
-
确切地说我不知道源图像 PixelFormat,首先我调整源图像的大小并克隆它然后运行压缩算法。最后我需要字节数组,但不要尝试 RLE 压缩,我应该用 CCITT4 压缩结果文件。我可以使用 PixelFormat 来减小尺寸吗?
标签: c# compression tiff image-compression