コード例 #1
0
        public void Encode(Image image, Stream stream)
        {
            int rowWidth = image.Width;

            int amount = (image.Width * 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.Height * rowWidth * 3;
            Write(writer, fileHeader);

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

            WriteImage(writer, image);

            writer.Flush();
        }
コード例 #2
0
 private static void Write(BinaryWriter writer, BmpFileHeader fileHeader)
 {
     writer.Write(fileHeader.Type);
     writer.Write(fileHeader.FileSize);
     writer.Write(fileHeader.Reserved);
     writer.Write(fileHeader.Offset);
 }
コード例 #3
0
            private void ReadFileHeader()
            {
                byte[] data = new byte[BmpFileHeader.Size];

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

                _fileHeader = new BmpFileHeader();
                _fileHeader.Type = BitConverter.ToInt16(data, 0);
                _fileHeader.FileSize = BitConverter.ToInt32(data, 2);
                _fileHeader.Reserved = BitConverter.ToInt32(data, 6);
                _fileHeader.Offset = BitConverter.ToInt32(data, 10);
            }