public override ImageMetaData ReadMetaData(IBinaryStream file) { var header = file.ReadHeader(8); if (!header.AsciiEqual("YP")) { return(null); } int unpacked_size = header.ToInt24(2); int packed_size = header.ToInt24(5); var data = LzUnpack(file, 0x36); using (var bmp = new BinMemoryStream(data, file.Name)) { var info = Bmp.ReadMetaData(bmp); if (null == info) { return(info); } return(new YpMetaData { Width = info.Width, Height = info.Height, BPP = info.BPP, UnpackedSize = unpacked_size, }); } }
public override ImageMetaData ReadMetaData(IBinaryStream file) { var header = file.ReadHeader(0x29); if (header.Length != 0x29) { return(null); } var gps = new GpsMetaData { Width = header.ToUInt32(0x19), Height = header.ToUInt32(0x1D), Compression = header[0x10], UnpackedSize = header.ToInt32(0x11), PackedSize = header.ToInt32(0x15), }; // read BMP header using (var stream = OpenGpsStream(file, gps.Compression, 0x54)) using (var input = BinaryStream.FromStream(stream, file.Name)) { var bmp_info = Bmp.ReadMetaData(input); if (null == bmp_info) { return(null); } gps.BPP = bmp_info.BPP; return(gps); } }
public override ImageMetaData ReadMetaData(IBinaryStream file) { var bmp_header = Decompress(file, 0x36); using (var bmp = new BinMemoryStream(bmp_header)) return(Bmp.ReadMetaData(bmp)); }
public override ImageMetaData ReadMetaData(IBinaryStream file) { var header = file.ReadHeader(8); using (var zstream = new ZLibStream(file.AsStream, CompressionMode.Decompress, true)) using (var bmp = new BinaryStream(zstream, file.Name)) return(Bmp.ReadMetaData(bmp)); }
public override ImageMetaData ReadMetaData(IBinaryStream file) { if ((file.Signature & 0xFFFF) != 0x444D) // 'MD' { return(null); } using (var bmp = OpenBitmap(file)) return(Bmp.ReadMetaData(bmp)); }
public override ImageMetaData ReadMetaData(IBinaryStream stream) { int count = stream.ReadInt16(); if (count <= 0 || count >= 0x100) { return(null); } int offset; if (count > 1) { offset = stream.ReadInt32(); if (offset != 2 + count * 4) { return(null); } } else { offset = 2; } stream.Position = offset; int unpacked_size = stream.ReadInt32(); int packed_size = stream.ReadInt32(); offset += 8; if (offset + packed_size > stream.Length) { return(null); } byte[] header = new byte[0x36]; if (0x36 != MgrOpener.Decompress(stream.AsStream, header) || header[0] != 'B' || header[1] != 'M') { return(null); } using (var bmp = new BinMemoryStream(header, stream.Name)) { var info = Bmp.ReadMetaData(bmp); if (null == info) { return(null); } return(new MgrMetaData { Width = info.Width, Height = info.Height, BPP = info.BPP, Offset = offset, PackedSize = packed_size, UnpackedSize = unpacked_size, }); } }
public override ImageMetaData ReadMetaData(IBinaryStream file) { var header = file.ReadHeader(2); if ('N' != header[0] || 'G' != header[1]) { return(null); } using (var bmp = OpenAsBitmap(file)) return(Bmp.ReadMetaData(bmp)); }
public override ImageMetaData ReadMetaData(IBinaryStream file) { var header = file.ReadHeader(0xA); if (!((header[4] & 0xF) == 0xF && header.AsciiEqual(5, "BM"))) { return(null); } using (var input = OpenBitmapStream(file)) return(Bmp.ReadMetaData(input)); }
public override ImageMetaData ReadMetaData(IBinaryStream file) { var header = file.ReadHeader(0x20); if (!header.AsciiEqual("Virgin Snow Compressed Data 1.0")) { return(null); } using (var bmp = UnpackStream(file)) return(Bmp.ReadMetaData(bmp)); }
public override ImageMetaData ReadMetaData(IBinaryStream stream) { var header = stream.ReadHeader(2); if (header[0] != 0xBD || header[1] != 0x59) { return(null); } using (var bmp = OpenEncrypted(stream)) return(Bmp.ReadMetaData(bmp)); }
public override ImageMetaData ReadMetaData(IBinaryStream file) { var header = file.ReadHeader(0xB); if (!header.AsciiEqual("CSF")) { return(null); } using (var input = UnpackedStream(file)) return(Bmp.ReadMetaData(input)); }
public override ImageMetaData ReadMetaData(IBinaryStream stream) { var header = ReadHeader(stream); if (null == header) { return(null); } using (var bmp = new BinMemoryStream(header, stream.Name)) return(Bmp.ReadMetaData(bmp)); }
public override ImageMetaData ReadMetaData(IBinaryStream file) { var header = file.ReadHeader(2); if ((header[0] ^ 0xFF) != 'B' || (header[1] ^ 0xFF) != 'M') { return(null); } using (var bmp = DeobfuscateStream(file)) return(Bmp.ReadMetaData(bmp)); }
public override ImageMetaData ReadMetaData(IBinaryStream stream) { stream.Position = 0x0e; using (var lz = new LzssStream(stream.AsStream, LzssMode.Decompress, true)) { lz.Config.FrameSize = 0x1000; lz.Config.FrameFill = 0x20; lz.Config.FrameInitPos = 0x1000 - 0x10; using (var bmp = new BinaryStream(lz, stream.Name)) return(Bmp.ReadMetaData(bmp)); } }
public override ImageMetaData ReadMetaData(IBinaryStream file) { var header = file.ReadHeader(2); if (!header.AsciiEqual("NY")) { return(null); } file.Position = 0; using (var input = OpenGtoStream(file)) return(Bmp.ReadMetaData(input)); }
public override ImageMetaData ReadMetaData(IBinaryStream file) { var header = file.ReadHeader(5); if (!header.AsciiEqual(0, "CP") || (header[2] & 0xC0) != 0xC0 || !header.AsciiEqual(3, "BM")) { return(null); } using (var bmp = OpenCompressed(file)) return(Bmp.ReadMetaData(bmp)); }
public override ImageMetaData ReadMetaData(IBinaryStream file) { var header = file.ReadHeader(2); if (header[0] != 0xBD || header[1] != 0xB2) { return(null); } file.Position = 0; using (var input = DecryptStream(file)) return(Bmp.ReadMetaData(input)); }
public override ImageMetaData ReadMetaData(IBinaryStream stream) { int c1 = stream.ReadByte(); int c2 = stream.ReadByte(); if ('M' != c1 || ('B' != c2 && 'C' != c2)) { return(null); } using (var bmp = OpenAsBitmap(stream)) return(Bmp.ReadMetaData(bmp)); }
public override ImageMetaData ReadMetaData(IBinaryStream stream) { int first = stream.PeekByte() ^ 0x21; if (first != 0x78) // doesn't look like zlib stream { return(null); } using (var input = new XoredStream(stream.AsStream, 0x21, true)) using (var zstream = new ZLibStream(input, CompressionMode.Decompress)) using (var bmp = new BinaryStream(zstream, stream.Name)) return(Bmp.ReadMetaData(bmp)); }
public override ImageMetaData ReadMetaData(IBinaryStream file) { if (!file.Name.HasExtension(".pbm")) { return(null); } var header = file.ReadHeader(8); if (!header.AsciiEqual(5, "BM")) { return(null); } using (var bmp = OpenBitmapStream(file, header.ToUInt32(0))) return(Bmp.ReadMetaData(bmp)); }
public override ImageMetaData ReadMetaData(IBinaryStream stream) { if (!stream.Name.HasExtension(".alo")) { return(null); } var header = stream.ReadHeader(2); if (0 != header[0] || 0 != header[1]) { return(null); } using (var bmp = OpenAsBitmap(stream)) return(Bmp.ReadMetaData(bmp)); }
public override ImageMetaData ReadMetaData(IBinaryStream stream) { int signature = ~stream.ReadInt32(); int mode = (signature & 0x70) >> 4; // v6 if (0 != (mode & 4)) { return(null); } int flag = signature & 0xF; // v7 int data_size, data_offset; if (0 != (signature & 0x80)) { data_offset = 4; data_size = Binary.BigEndian(signature) & 0xFFFFFF; } else { data_offset = 8; data_size = Binary.BigEndian(stream.ReadInt32()); } if (data_size <= 0 || data_size > 0xFFFFFF) // arbitrary max BMP size { return(null); } var reader = new Reader(stream, 0x36, mode, flag); // size of BMP header reader.Unpack(); using (var bmp = new BinMemoryStream(reader.Data, stream.Name)) { var info = Bmp.ReadMetaData(bmp); if (null == info) { return(null); } return(new EgnMetaData { Width = info.Width, Height = info.Height, BPP = info.BPP, Mode = mode, Flag = flag, DataOffset = data_offset, UnpackedSize = data_size, }); } }
public override ImageMetaData ReadMetaData(IBinaryStream file) { if (!file.Name.HasExtension(".bpe") || file.Signature < 0x36) { return(null); } file.Position = 4; var unpacked = Decompress(file, 0x36); if (!unpacked.AsciiEqual("BM")) { return(null); } using (var bmp = new BinMemoryStream(unpacked, file.Name)) return(Bmp.ReadMetaData(bmp)); }
public override ImageData Read(IBinaryStream file, ImageMetaData info) { ImageData base_img; using (var input = new StreamRegion(file.AsStream, 0x24, true)) using (var bmp = new BinaryStream(input, file.Name)) { var bmp_info = Bmp.ReadMetaData(bmp) as BmpMetaData; if (null == bmp_info) { throw new InvalidFormatException(); } bmp.Position = 0; base_img = Bmp.Read(bmp, bmp_info); file.Position = 0x24 + bmp_info.ImageLength; if (file.PeekByte() == -1) { return(base_img); } } using (var input = new StreamRegion(file.AsStream, file.Position, true)) using (var bmp = new BinaryStream(input, file.Name)) { var bmp_info = Bmp.ReadMetaData(bmp) as BmpMetaData; if (null == bmp_info) { return(base_img); } bmp.Position = 0; var alpha_img = Bmp.Read(bmp, bmp_info); var alpha_bmp = new FormatConvertedBitmap(alpha_img.Bitmap, PixelFormats.Gray8, null, 0); var alpha = new byte[alpha_bmp.PixelWidth * alpha_bmp.PixelHeight]; alpha_bmp.CopyPixels(alpha, alpha_bmp.PixelWidth, 0); var base_bmp = new FormatConvertedBitmap(base_img.Bitmap, PixelFormats.Bgr32, null, 0); int stride = base_bmp.PixelWidth * 4; var pixels = new byte[stride * base_bmp.PixelHeight]; base_bmp.CopyPixels(pixels, stride, 0); int asrc = 0; for (int dst = 3; dst < pixels.Length; dst += 4) { pixels[dst] = alpha[asrc++]; } return(ImageData.Create(info, PixelFormats.Bgra32, null, pixels, stride)); } }
public override ImageData Read(IBinaryStream file, ImageMetaData info) { var meta = (FgMetaData)info; using (var input = new StreamRegion(file.AsStream, meta.DataOffset, meta.DataLength, true)) using (var bmp = new BinaryStream(input, file.Name)) { var bmp_info = Bmp.ReadMetaData(bmp); if (null == bmp_info) { throw new InvalidFormatException(); } bmp.Position = 0; bmp_info.OffsetX = meta.OffsetX; bmp_info.OffsetY = meta.OffsetY; return(Bmp.Read(bmp, bmp_info)); } }
public override ImageMetaData ReadMetaData(IBinaryStream file) { var header = file.ReadHeader(10); if (!header.AsciiEqual(8, "BM")) { return(null); } using (var bmp = OpenBmpStream(file)) { var info = Bmp.ReadMetaData(bmp); if (null == info || info.Width != header.ToUInt32(0) || info.Height != header.ToUInt32(4)) { return(null); } return(info); } }
public override ImageMetaData ReadMetaData(IBinaryStream stream) { stream.Position = 0x0e; using (var lz = new LzssReader(stream.AsStream, 100, 54)) // extract BMP header { lz.FrameSize = 0x1000; lz.FrameFill = 0x20; lz.FrameInitPos = 0x1000 - 0x10; lz.Unpack(); var header = lz.Data; for (int i = 0; i < 54; ++i) { header[i] ^= 0xff; } using (var bmp = new BinMemoryStream(header, stream.Name)) return(Bmp.ReadMetaData(bmp)); } }
public override ImageMetaData ReadMetaData(IBinaryStream file) { if (file.Signature != 0) { return(null); } var header = file.ReadHeader(14); if (!header.AsciiEqual(8, "BM")) { return(null); } if (header.ToUInt32(4) != header.ToUInt32(10)) { return(null); } using (var region = new StreamRegion(file.AsStream, 8, true)) using (var bmp = new BinaryStream(region, file.Name)) return(Bmp.ReadMetaData(bmp)); }
} // 'TRIz' public override ImageMetaData ReadMetaData(IBinaryStream file) { var header = file.ReadHeader(8); var bmp_header = new byte[56]; Unpack(file, bmp_header); using (var bmp = new BinMemoryStream(bmp_header, file.Name)) { var bmp_info = Bmp.ReadMetaData(bmp); if (null == bmp_info) { return(null); } return(new TriMetaData { Width = bmp_info.Width, Height = bmp_info.Height, BPP = bmp_info.BPP, UnpackedSize = header.ToInt32(4) ^ 0x65641538, }); } }
public override ImageMetaData ReadMetaData(IBinaryStream file) { var header = file.ReadHeader(0x10); bool is_compressed = (header[12] & 7) != 0; using (var input = OpenLzss(file, 0x42, is_compressed)) { var info = Bmp.ReadMetaData(input); if (null == info) { return(null); } return(new LzsMetaData { Width = info.Width, Height = info.Height, BPP = info.BPP, IsCompressed = is_compressed, UnpackedSize = header.ToInt32(8), }); } }