Ignore:
Timestamp:
Aug 20, 2010, 2:59:11 PM (11 years ago)
Author:
kopal
Message:
  • added support for serializing/deserializing pictures into model files
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/WorkspaceManager/Model/ImageModel.cs

    r1842 r1847  
    55using System.Windows.Media.Imaging;
    66using System.IO;
     7using System.Windows.Media;
    78using System.Windows.Controls;
     9
    810
    911namespace WorkspaceManager.Model
     
    1214    /// This class wraps a image which can be put onto the workspace
    1315    /// </summary>
     16    [Serializable]
    1417    public class ImageModel : VisualElementModel
    1518    {
    1619        private byte[] data = null;
     20        private int height;
     21        private int width;
     22        private int stride;
    1723
    1824        /// <summary>
    1925        /// Get the BitmapImage represented by this ImageModel
    2026        /// </summary>
    21         /// <param name="bytes"></param>
    2227        /// <returns></returns>
    23         public BitmapImage getImage(Byte[] bytes)
     28        public Image getImage()
    2429        {
    25             MemoryStream stream = new MemoryStream(bytes);
    26             BitmapImage image = new BitmapImage();
    27             image.BeginInit();
    28             image.StreamSource = stream;
    29             image.EndInit();
     30            Image image = new Image();           
     31            if (data == null)
     32            {
     33                return image;
     34            }
     35
     36            image.Source = BitmapImage.Create(width,
     37                          height,
     38                          96,
     39                          96,
     40                          System.Windows.Media.PixelFormats.Bgr32,
     41                          null,
     42                          data,
     43                          stride);
    3044            return image;
    3145        }
     
    3448        /// Instantiate a new ImageModel
    3549        /// </summary>
     50        public ImageModel()           
     51        {
     52
     53        }
     54        /// <summary>
     55        /// Instantiate a new ImageModel
     56        /// </summary>
    3657        /// <param name="imageSource"></param>
    3758        public ImageModel(Uri imgUri)
    3859        {
    39             BitmapImage img = new BitmapImage(imgUri);
    40             Stream stream = img.StreamSource;
    41             Byte[] buffer = null;
    42             if (stream != null && stream.Length > 0)
     60            if (imgUri == null)
    4361            {
    44                 using (BinaryReader br = new BinaryReader(stream))
    45                 {
    46                     buffer = br.ReadBytes((Int32)stream.Length);
    47                 }
     62                return;
    4863            }
    4964
    50             this.data = buffer;
     65            BitmapImage bmpImage = new BitmapImage(imgUri) ;
     66            height = bmpImage.PixelHeight;
     67            width = bmpImage.PixelWidth;
     68            PixelFormat format = bmpImage.Format;
     69            stride = width * ((format.BitsPerPixel + 7) / 8);           
     70            byte[] byteImage = new byte[height * stride];
     71            bmpImage.CopyPixels(byteImage, stride, 0);
     72
     73            this.data = byteImage;
    5174        }
    5275    }
Note: See TracChangeset for help on using the changeset viewer.