public override ImageMetaData ReadMetaData(Stream stream) { var header = new byte[0x10]; if (0x10 != stream.Read (header, 0, 0x10)) return null; int unpacked_size = LittleEndian.ToInt32 (header, 8); using (var alb = new AlbStream (stream, unpacked_size)) using (var file = new SeekableStream (alb)) { uint signature = FormatCatalog.ReadSignature (file); file.Position = 0; ImageFormat format; if (ImageFormat.Png.Signature == signature) format = ImageFormat.Png; else if (Dds.Value.Signature == signature) format = Dds.Value; else format = ImageFormat.Jpeg; var info = format.ReadMetaData (file); if (null == info) return null; return new AlbMetaData { Width = info.Width, Height = info.Height, OffsetX = info.OffsetX, OffsetY = info.OffsetY, BPP = info.BPP, Format = format, Info = info, UnpackedSize = unpacked_size, }; } }
public override ImageData Read(Stream stream, ImageMetaData info) { var meta = (AlbMetaData)info; stream.Position = 0x10; using (var alb = new AlbStream (stream, meta.UnpackedSize)) using (var file = new SeekableStream (alb)) return meta.Format.Read (file, meta.Info); }
public override ImageData Read(Stream stream, ImageMetaData info) { var meta = (AlbMetaData)info; stream.Position = 0x10; using (var alb = new AlbStream(stream, meta.UnpackedSize)) using (var file = new SeekableStream(alb)) return(meta.Format.Read(file, meta.Info)); }
public override ImageMetaData ReadMetaData(Stream stream) { var header = new byte[0x10]; if (0x10 != stream.Read(header, 0, 0x10)) { return(null); } int unpacked_size = LittleEndian.ToInt32(header, 8); using (var alb = new AlbStream(stream, unpacked_size)) using (var file = new SeekableStream(alb)) { uint signature = FormatCatalog.ReadSignature(file); file.Position = 0; ImageFormat format; if (ImageFormat.Png.Signature == signature) { format = ImageFormat.Png; } else if (Dds.Value.Signature == signature) { format = Dds.Value; } else { format = ImageFormat.Jpeg; } var info = format.ReadMetaData(file); if (null == info) { return(null); } return(new AlbMetaData { Width = info.Width, Height = info.Height, OffsetX = info.OffsetX, OffsetY = info.OffsetY, BPP = info.BPP, Format = format, Info = info, UnpackedSize = unpacked_size, }); } }
public override ImageMetaData ReadMetaData(IBinaryStream stream) { var header = stream.ReadHeader(0x10); int unpacked_size = header.ToInt32(8); using (var alb = new AlbStream(stream, unpacked_size)) using (var s = new SeekableStream(alb)) using (var file = new BinaryStream(s, stream.Name)) { uint signature = file.Signature; ImageFormat format; if (Png.Signature == signature) { format = ImageFormat.Png; } else if (Dds.Value.Signature == signature) { format = Dds.Value; } else { format = ImageFormat.Jpeg; } file.Position = 0; var info = format.ReadMetaData(file); if (null == info) { return(null); } return(new AlbMetaData { Width = info.Width, Height = info.Height, OffsetX = info.OffsetX, OffsetY = info.OffsetY, BPP = info.BPP, Format = format, Info = info, UnpackedSize = unpacked_size, }); } }