Exemplo n.º 1
0
 private static void Write(BinaryWriter writer, BmpInfoHeader infoHeader)
 {
     writer.Write(infoHeader.HeaderSize);
     writer.Write(infoHeader.Width);
     writer.Write(infoHeader.Height);
     writer.Write(infoHeader.Planes);
     writer.Write(infoHeader.BitsPerPixel);
     writer.Write((int)infoHeader.Compression);
     writer.Write(infoHeader.ImageSize);
     writer.Write(infoHeader.XPelsPerMeter);
     writer.Write(infoHeader.YPelsPerMeter);
     writer.Write(infoHeader.ClrUsed);
     writer.Write(infoHeader.ClrImportant);
 }
Exemplo n.º 2
0
        private void ReadInfoHeader()
        {
            byte[] data = new byte[BmpInfoHeader.Size];

            _stream.Read(data, 0, BmpInfoHeader.Size);

            _infoHeader               = new BmpInfoHeader();
            _infoHeader.HeaderSize    = BitConverter.ToInt32(data, 0);
            _infoHeader.Width         = BitConverter.ToInt32(data, 4);
            _infoHeader.Height        = BitConverter.ToInt32(data, 8);
            _infoHeader.Planes        = BitConverter.ToInt16(data, 12);
            _infoHeader.BitsPerPixel  = BitConverter.ToInt16(data, 14);
            _infoHeader.ImageSize     = BitConverter.ToInt32(data, 20);
            _infoHeader.XPelsPerMeter = BitConverter.ToInt32(data, 24);
            _infoHeader.YPelsPerMeter = BitConverter.ToInt32(data, 28);
            _infoHeader.ClrUsed       = BitConverter.ToInt32(data, 32);
            _infoHeader.ClrImportant  = BitConverter.ToInt32(data, 36);
            _infoHeader.Compression   = (BmpCompression)BitConverter.ToInt32(data, 16);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Encodes the data of the specified image and writes the result to
        /// the specified stream.
        /// </summary>
        /// <param name="image">The image, where the data should be get from.
        /// Cannot be null (Nothing in Visual Basic).</param>
        /// <param name="stream">The stream, where the image data should be written to.
        /// Cannot be null (Nothing in Visual Basic).</param>
        /// <exception cref="ArgumentNullException">
        ///     <para><paramref name="image"/> is null (Nothing in Visual Basic).</para>
        ///     <para>- or -</para>
        ///     <para><paramref name="stream"/> is null (Nothing in Visual Basic).</para>
        /// </exception>
        public void Encode(ExtendedImage image, Stream stream)
        {
            Guard.NotNull(image, "image");
            Guard.NotNull(stream, "stream");

            int rowWidth = image.PixelWidth;

            int amount = (image.PixelWidth * 3) % 4;

            if (amount != 0)
            {
                rowWidth += 4 - amount;
            }

            BinaryWriter writer = new BinaryWriter(stream);

            BmpFileHeader fileHeader = new BmpFileHeader();

            fileHeader.Type     = 19778;
            fileHeader.Offset   = 54;
            fileHeader.FileSize = 54 + image.PixelHeight * rowWidth * 3;
            Write(writer, fileHeader);

            BmpInfoHeader infoHeader = new BmpInfoHeader();

            infoHeader.HeaderSize   = 40;
            infoHeader.Height       = image.PixelHeight;
            infoHeader.Width        = image.PixelWidth;
            infoHeader.BitsPerPixel = 24;
            infoHeader.Planes       = 1;
            infoHeader.Compression  = BmpCompression.RGB;
            infoHeader.ImageSize    = image.PixelHeight * rowWidth * 3;
            infoHeader.ClrUsed      = 0;
            infoHeader.ClrImportant = 0;
            Write(writer, infoHeader);

            WriteImage(writer, image);

            writer.Flush();
        }
Exemplo n.º 4
0
        /// <summary>
        /// Encodes the data of the specified image and writes the result to
        /// the specified stream.
        /// </summary>
        /// <param name="image">The image, where the data should be get from.
        /// Cannot be null (Nothing in Visual Basic).</param>
        /// <param name="stream">The stream, where the image data should be written to. 
        /// Cannot be null (Nothing in Visual Basic).</param>
        /// <exception cref="ArgumentNullException">
        /// 	<para><paramref name="image"/> is null (Nothing in Visual Basic).</para>
        /// 	<para>- or -</para>
        /// 	<para><paramref name="stream"/> is null (Nothing in Visual Basic).</para>
        /// </exception>
        public void Encode(ExtendedImage image, Stream stream)
        {
            Guard.NotNull(image, "image");
            Guard.NotNull(stream, "stream");

            int rowWidth = image.PixelWidth;

            int amount = (image.PixelWidth * 3) % 4; 
            if (amount != 0)
            {
                rowWidth += 4 - amount;
            }

            BinaryWriter writer = new BinaryWriter(stream);

            BmpFileHeader fileHeader = new BmpFileHeader();
            fileHeader.Type = 19778;
            fileHeader.Offset = 54;
            fileHeader.FileSize = 54 + image.PixelHeight * rowWidth * 3;
            Write(writer, fileHeader);

            BmpInfoHeader infoHeader = new BmpInfoHeader();
            infoHeader.HeaderSize = 40;
            infoHeader.Height = image.PixelHeight;
            infoHeader.Width = image.PixelWidth;
            infoHeader.BitsPerPixel = 24;
            infoHeader.Planes = 1;
            infoHeader.Compression = BmpCompression.RGB;
            infoHeader.ImageSize = image.PixelHeight * rowWidth * 3;
            infoHeader.ClrUsed = 0;
            infoHeader.ClrImportant = 0;
            Write(writer, infoHeader);

            WriteImage(writer, image);

            writer.Flush();
        }
Exemplo n.º 5
0
 private static void Write(BinaryWriter writer, BmpInfoHeader infoHeader)
 {
     writer.Write(infoHeader.HeaderSize);
     writer.Write(infoHeader.Width);
     writer.Write(infoHeader.Height);
     writer.Write(infoHeader.Planes);
     writer.Write(infoHeader.BitsPerPixel);
     writer.Write((int)infoHeader.Compression);
     writer.Write(infoHeader.ImageSize);
     writer.Write(infoHeader.XPelsPerMeter);
     writer.Write(infoHeader.YPelsPerMeter);
     writer.Write(infoHeader.ClrUsed);
     writer.Write(infoHeader.ClrImportant);
 }
Exemplo n.º 6
0
        private void ReadInfoHeader()
        {
            byte[] data = new byte[BmpInfoHeader.Size];

            _stream.Read(data, 0, BmpInfoHeader.Size);

            _infoHeader = new BmpInfoHeader();
            _infoHeader.HeaderSize = BitConverter.ToInt32(data, 0);
            _infoHeader.Width = BitConverter.ToInt32(data, 4);
            _infoHeader.Height = BitConverter.ToInt32(data, 8);
            _infoHeader.Planes = BitConverter.ToInt16(data, 12);
            _infoHeader.BitsPerPixel = BitConverter.ToInt16(data, 14);
            _infoHeader.ImageSize = BitConverter.ToInt32(data, 20);
            _infoHeader.XPelsPerMeter = BitConverter.ToInt32(data, 24);
            _infoHeader.YPelsPerMeter = BitConverter.ToInt32(data, 28);
            _infoHeader.ClrUsed = BitConverter.ToInt32(data, 32);
            _infoHeader.ClrImportant = BitConverter.ToInt32(data, 36);
            _infoHeader.Compression = (BmpCompression)BitConverter.ToInt32(data, 16);
        }