コード例 #1
0
ファイル: Program.cs プロジェクト: shirokurakana/th123toolkit
            public CV2Reader(Stream input)
            {
                if (input.Length < 17)
                {
                    throw new IOException("ファイルが小さすぎます");
                }
                _header = CV2Header.Deserialize(input);
                if (_header.Height * _header.PaddedWidth * _header.Bpp > input.Length - 17)
                {
                    throw new IOException("ファイルが小さすぎます");
                }

                input.Seek(17, SeekOrigin.Begin);
                _image = new Bitmap(_header.Width, _header.Height, _header.PixelFormat);
                int lineSize = _header.Width * _header.Bpp;

                byte[] lineBuf = new byte[_header.PaddedWidth * _header.Bpp];
                for (int y = 0; y < _header.Height; ++y)
                {
                    input.Read(lineBuf, 0, lineBuf.Length);
                    BitmapData data = _image.LockBits(
                        new Rectangle(0, y, _header.Width, 1),
                        ImageLockMode.WriteOnly, _header.PixelFormat);
                    Marshal.Copy(lineBuf, 0, data.Scan0, lineSize);
                    _image.UnlockBits(data);
                }
            }
コード例 #2
0
ファイル: Program.cs プロジェクト: shirokurakana/th123toolkit
            public static CV2Header Deserialize(Stream input)
            {
                CV2Header header = new CV2Header();
                Binary    reader = new Binary(input);

                header.bpp         = reader.ReadByte();
                header.Width       = reader.ReadInt32();
                header.Height      = reader.ReadInt32();
                header.PaddedWidth = reader.ReadInt32();
                int resd1 = reader.ReadInt32();

                if (header.PaddedWidth < header.Width)
                {
                    throw new FormatException("ヘッダーが不正です。");
                }
                return(header);
            }
コード例 #3
0
ファイル: Program.cs プロジェクト: kghost/th123_toolset
            public CV2Reader(Stream input)
            {
                if (input.Length < 17)
                    throw new IOException("ファイルが小さすぎます");
                _header = CV2Header.Deserialize(input);
                if (_header.Height * _header.PaddedWidth * _header.Bpp > input.Length - 17)
                    throw new IOException("ファイルが小さすぎます");

                input.Seek(17, SeekOrigin.Begin);
                _image = new Bitmap(_header.Width, _header.Height, _header.PixelFormat);
                int lineSize = _header.Width * _header.Bpp;
                byte[] lineBuf = new byte[_header.PaddedWidth * _header.Bpp];
                for (int y = 0; y < _header.Height; ++y)
                {
                    input.Read(lineBuf, 0, lineBuf.Length);
                    BitmapData data = _image.LockBits(
                         new Rectangle(0, y, _header.Width, 1),
                         ImageLockMode.WriteOnly, _header.PixelFormat);
                    Marshal.Copy(lineBuf, 0, data.Scan0, lineSize);
                    _image.UnlockBits(data);
                }
            }
コード例 #4
0
ファイル: Program.cs プロジェクト: kghost/th123_toolset
            public static CV2Header Deserialize(Stream input)
            {
                CV2Header header = new CV2Header();
                Binary reader = new Binary(input);
                header.bpp = reader.ReadByte();
                header.Width = reader.ReadInt32();
                header.Height = reader.ReadInt32();
                header.PaddedWidth = reader.ReadInt32();
                int resd1 = reader.ReadInt32();

                if (header.PaddedWidth < header.Width)
                    throw new FormatException("ヘッダーが不正です。");
                return header;
            }