none
请问怎样通过C#获取图片(tif)的压缩方式? RRS feed

  • 问题

  • 比如:有一张图片

    图片路径:d:\test.tif
    图片的压缩:CCITT 4
    ---------------------------------------------

    现在我想同过代码来获取该图片的“压缩方式”,

    问题一:请问怎样获取呢?

    问题二:请问我对图片进行处理(比如:旋转)之后,再保存该图片的时候,怎样才能不改变该图片的压缩方式(CCITT 4)呢?

    --------------------------------
    希望各位帮帮忙,指点下,我感激不尽。

    2010年6月24日 8:16

答案

  •             // 问题一:
                // 获取TIFF编码解码器
                ImageCodecInfo ImageCodecInfo1 = null;
                ImageCodecInfo[] encoders = ImageCodecInfo.GetImageDecoders();
                foreach (ImageCodecInfo imageCodecInfo in encoders)
                {
                    if (imageCodecInfo.FormatDescription=="TIFF")
                    {
                        ImageCodecInfo1 = imageCodecInfo;
                        break;
                    }
                }
                // 读取图片
                Image image1 = Image.FromFile(@"c:\1.tif");
                EncoderParameters eps = image1.GetEncoderParameterList(ImageCodecInfo1.Clsid);
                foreach (EncoderParameter ep in eps.Param)
                {
                    // 查找压缩参数(注意要ToString)
                    if (ep.Encoder.ToString() == System.Drawing.Imaging.Encoder.Compression.ToString())
                    {
                        //用枚举System.Drawing.Imaging.EncoderValue与compressionValue比对
                        int compressionValue = ep.NumberOfValues;
                        int v2 = (int)System.Drawing.Imaging.EncoderValue.CompressionLZW;
                        int v3 = (int)System.Drawing.Imaging.EncoderValue.CompressionCCITT3;
                        int v4 = (int)System.Drawing.Imaging.EncoderValue.CompressionCCITT4;
                        int v5 = (int)System.Drawing.Imaging.EncoderValue.CompressionRle;
                        int v6 = (int)System.Drawing.Imaging.EncoderValue.CompressionNone;
                    }
                }
    2010年7月1日 2:41