Programming with C#/C# 프로그래밍

[C# 프로그래밍] 이미지와 문자열 변환

laboputer 2015. 7. 6. 16:50





BitmapImage To String

if ((checkStream = openFileDialog.OpenFile()) != null)
                    {
                        BitmapImage src = new BitmapImage(new Uri(openFileDialog.FileName));
                        Profile_image.Source = src; //Image

                        image = ImageToStringConvert(src);
                    }

 public static string ImageToStringConvert(BitmapImage Bitmapimage)
        {
            //BitmapImage To Byte[] Data
            MemoryStream memStream = new MemoryStream();
            JpegBitmapEncoder encoder = new JpegBitmapEncoder();
            encoder.Frames.Add(BitmapFrame.Create(Bitmapimage));
            encoder.Save(memStream);

            byte[] Image_BinaryData = memStream.GetBuffer();

            // BinaryData To StringData
            string ImageString = Convert.ToBase64String(Image_BinaryData);

            return ImageString;
        }
 


이미지 파일 자체를 선택하면 BitmapImage 객체로 받을 수 있습니다.

Image객체의 Source Property는 ImageSource 객체인데 BitmapImage 에서 자동 형변환 됩니다.

만약 실제 ImageToString을 구현하고 싶으면 Source값을 넣어준 image객체를 매개변수로 넣는 것으로 바꾸면 됩니다.



String To Image

   public static Image ConvertStringToImage(string str)
        {
            if (str == null || str=="")
                return null;

            Image img = new Image();

            byte[] jpgimages = Convert.FromBase64String(str);
            MemoryStream streams = new MemoryStream(jpgimages);
            JpegBitmapDecoder decoders = new JpegBitmapDecoder(streams, BitmapCreateOptions.None, BitmapCacheOption.None);
            BitmapSource imagesources = decoders.Frames[0];
            img.Source = imagesources;

            return img;
        }