이미지 저장 시 압축 형식 처리

1740 단어 C#
최근에 이미지를 처리할 때 원래는 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;
        }

좋은 웹페이지 즐겨찾기