private JB2Image ReadCompressedImage() { using (DjvuReader reader = Reader.CloneReader(_dataLocation, Length)) { JB2Image image = new JB2Image(); JB2.JB2Dictionary includedDictionary = null; if (Parent is FormChunk) { InclChunk[] includes = ((FormChunk)Parent).IncludedItems; if (includes != null && includes.Count() > 0) { string includeID = includes.FirstOrDefault().IncludeID; var includeItem = Document.GetChunkByID <DjbzChunk>(includeID); if (includeItem != null) { includedDictionary = includeItem.ShapeDictionary; } } } image.Decode(reader, includedDictionary); return(image); } }
/// <summary> /// Reads the image which is used to remove the watermark /// </summary> /// <returns></returns> private JB2Image ReadCompressedWatermarkImage() { using (DjvuReader reader = Reader.CloneReader(_dataLocation, Length)) { JB2Image image = new JB2Image(); image.Decode(reader); return(image); } }
/// <summary> /// Reads the image which is used to remove the watermark /// </summary> /// <returns></returns> internal JB2Image ReadCompressedWatermarkImage() { using (IDjvuReader reader = Reader.CloneReaderToMemory(DataOffset, Length)) { JB2Image image = new JB2Image(); image.Decode(reader); return(image); } }
internal JB2Image ReadCompressedImage() { using (IDjvuReader reader = Reader.CloneReaderToMemory(DataOffset, Length)) { JB2Image image = new JB2Image(); JB2.JB2Dictionary includedDictionary = null; if (Parent is DjvuChunk djvuChunk) { IReadOnlyList <InclChunk> includes = djvuChunk.IncludedItems; if (includes?.Count > 0) { var includeIDs = includes .Where <InclChunk>(x => x.ChunkType == ChunkType.Incl); var root = Document.RootForm as DjvmChunk; DjbzChunk djbzItem = null; foreach (InclChunk iChunk in includeIDs) { DirmComponent component = root?.Dirm.Components .Where <DirmComponent>(x => x.ID == iChunk.IncludeID).FirstOrDefault(); var includeForm = root.Includes .FirstOrDefault <IDjviChunk>(x => x.DataOffset == (component.Offset + 12)); djbzItem = includeForm?.Children .FirstOrDefault(x => x.ChunkType == ChunkType.Djbz) as DjbzChunk; if (djbzItem != null) { break; } } includedDictionary = djbzItem?.ShapeDictionary; } } image.Decode(reader, includedDictionary); return(image); } }
internal JB2Image ReadCompressedImage() { using (IDjvuReader reader = Reader.CloneReaderToMemory(DataOffset, Length)) { JB2Image image = new JB2Image(); JB2.JB2Dictionary includedDictionary = null; DjvuChunk djvuChunk = Parent as DjvuChunk; if (djvuChunk != null) { var includes = djvuChunk.IncludedItems; if (includes?.Count > 0) { string includeID = includes .FirstOrDefault <InclChunk>(x => x.ChunkType == ChunkType.Incl)?.IncludeID; DjvmChunk root = Document.RootForm as DjvmChunk; DirmComponent component = root?.Dirm.Components .Where <DirmComponent>(x => x.ID == includeID).FirstOrDefault(); var includeForm = root.Includes .Where(x => x.DataOffset == (component.Offset + 12)) .FirstOrDefault <IDjviChunk>(); var djbzItem = includeForm?.Children .Where <IDjvuNode>(x => x.ChunkType == ChunkType.Djbz).FirstOrDefault() as DjbzChunk; includedDictionary = djbzItem?.ShapeDictionary; } } image.Decode(reader, includedDictionary); return(image); } }