图像保存时候对压缩格式的处理

最近在处理图像的时候,原来是CCITT T.6的,经过Batmap  的 Save(Stream, ImageFormat) 方法,结果图像压缩格式改变为 LZW的压缩格式,这样影响了程序的后续处理,最后修改为调用Save(Stream, ImageCodecInfo, EncoderParameters) 来保存,代码如下:

public static byte[] BitmapToBytes(Bitmap bitmap)
        {
            ImageCodecInfo myImageCodecInfo;
            System.Drawing.Imaging.Encoder myEncoder;
            myEncoder = System.Drawing.Imaging.Encoder.Compression;
            EncoderParameters myEncoderParameters;
            myImageCodecInfo = GetEncoderInfo("image/tiff");
            EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, (long)EncoderValue.CompressionCCITT4);
            myEncoderParameters = new EncoderParameters(1);
            myEncoderParameters.Param[0] = myEncoderParameter;
            MemoryStream ms = null;
            try
            {
                ms = new MemoryStream();
                bitmap.Save(ms, myImageCodecInfo, myEncoderParameters);
                byte[] byteImage = new Byte[ms.Length];
                byteImage = ms.ToArray();
                return byteImage;
            }
            catch (ArgumentNullException ex)
            {
                throw ex;
            }
            finally
            {
                ms.Close();
            }
        }
        private static ImageCodecInfo GetEncoderInfo(string mimeType)
        {
            int j;
            ImageCodecInfo[] encoders;

            encoders = ImageCodecInfo.GetImageDecoders();
            for (j = 0; j < encoders.Length; j++)
            {
                if (encoders[j].MimeType == mimeType)
                    return encoders[j];
            }
            return null;
        }


猜你喜欢

转载自blog.csdn.net/leveldc/article/details/17950997