Esempio n. 1
0
        /// <summary>
        /// Core merge function
        /// </summary>
        /// <param name="images">Images to concatenae following provided order</param>
        /// <param name="dataBuffer">Open stream used to save data</param>
        /// <returns>Merged image</returns>
        protected static Image Merge(TiffEncodingFormat format, Stream dataBuffer, IEnumerable <Image> images)
        {
            var memoryImgs = images.Select(img => new InMemoryTiff(img));

            // Get all pages from each (multi)tiff image and flattens Ienumerable<IEnumerable<Image>> to IEnumerable<Image>
            var pages = memoryImgs.Select(img => img.Split()).SelectMany(page => page);

            // First image
            Image newImage = pages.First().Image;

            newImage.Save(dataBuffer, CodecInfo, format.FirstPage);

            // Other images
            var skipFirst = pages.Skip(1);

            foreach (var image in skipFirst)
            {
                newImage.SaveAdd(image.Image, format.XPage);
                image.Dispose();
            }

            // Last page
            newImage.SaveAdd(format.LastPage);

            return(newImage);
        }
        /// <summary>
        /// Merge (multi-page) TIFF images
        /// For very big images consider using <seealso cref="MergeToFile"/>
        /// </summary>
        public static InMemoryTiff Merge(TiffEncodingFormat format, IEnumerable <Image> images)
        {
            var tiff = new InMemoryTiff(images.First());

            tiff.Append(images.Skip(1));

            return(tiff);
        }
        public static FileSystemTiff Merge(TiffEncodingFormat format, string outFile, params string[] images)
        {
            //we receive path to images: we have to load, do our task and dispose them

            var frames = images.Select(image => new FileSystemTiff(image));
            var newImg = Merge(format, outFile, frames.Select(frame => frame.Image));

            frames.Foreach(frame => frame.Dispose());
            return(newImg);
        }
 public static void SaveTiffs(Dictionary <int, List <InMemoryTiff> > splitDic, string folder)
 {
     foreach (var key in splitDic.Keys)
     {
         string             filePath           = string.Format("{0}_{1}.tif", DateTime.Now.ToString("yyyyMMddHHmmss"), key);
         TiffEncodingFormat tiffEncodingFormat = new TiffEncodingFormat(splitDic[key].Count);
         InMemoryTiff       tempInMemoryTiff   = InMemoryTiff.Merge(tiffEncodingFormat, splitDic[key].ToArray());
         tempInMemoryTiff.SaveTo(folder + filePath);
         tempInMemoryTiff.SaveTo(TiffEncodingFormats.Tiff1Bpp, folder + filePath);
         tempInMemoryTiff.Dispose();
     }
 }
 public static FileSystemTiff Merge(TiffEncodingFormat format, string outFile, params FileSystemTiff[] images)
 {
     return(Merge(format, outFile, images.Select(image => image.Image)));
 }
 public static FileSystemTiff Merge(TiffEncodingFormat format, string outFile, IEnumerable <FileSystemTiff> images)
 {
     return(Merge(format, outFile, images.Select(image => image.Image)));
 }
Esempio n. 7
0
 /// <summary>
 /// Merge (multi-page) TIFF images
 /// For very big images consider using <seealso cref="MergeToFile"/>
 /// </summary>
 public static InMemoryTiff Merge(TiffEncodingFormat format, params Stream[] imageStreams)
 {
     return(Merge(format, imageStreams.Select(stream => new InMemoryTiff(stream).Image)));
 }
Esempio n. 8
0
 /// <summary>
 /// Merge (multi-page) TIFF images
 /// For very big images consider using <seealso cref="MergeToFile"/>
 /// </summary>
 public static InMemoryTiff Merge(TiffEncodingFormat format, IEnumerable <Stream> imageStreams)
 {
     return(Merge(format, imageStreams.Select(stream => new InMemoryTiff(stream).Image)));
 }
Esempio n. 9
0
 /// <summary>
 /// Merge (multi-page) TIFF images
 /// For very big images consider using <seealso cref="MergeToFile"/>
 /// </summary>
 public static InMemoryTiff Merge(TiffEncodingFormat format, params InMemoryTiff[] tiffs)
 {
     return(Merge(format, tiffs.Select(tiff => tiff.Image)));
 }
Esempio n. 10
0
 /// <summary>
 /// Merge (multi-page) TIFF images
 /// For very big images consider using <seealso cref="MergeToFile"/>
 /// </summary>
 public static InMemoryTiff Merge(TiffEncodingFormat format, IEnumerable <InMemoryTiff> images)
 {
     return(Merge(format, images.Select(tif => tif.Image)));
 }
Esempio n. 11
0
 protected AbstractTiff()
 {
     this.DefaultFormat = TiffEncodingFormats.TiffRegular;
     this.MemoryStream  = new MemoryStream();
 }
Esempio n. 12
0
 /// <summary>
 /// Saves this image to file system
 /// </summary>
 ///
 /// <param name="destinationFile">Full path to output file. If file does not exists it is created, otherwise it is overwritten.</param>
 /// <returns>A reference to the new image</returns>
 public FileSystemTiff SaveTo(TiffEncodingFormat encoding, string destinationFile)
 {
     Merge(encoding, new FileStream(destinationFile, FileMode.Create), this.Image);
     return(new FileSystemTiff(destinationFile));
 }
Esempio n. 13
0
 protected static Image Merge(TiffEncodingFormat format, Stream dataBuffer, params Image[] images)
 {
     return(Merge(format, dataBuffer, images.Select(image => image)));
 }
 /// <summary>
 /// Merge this (multi-page) TIFF image with other (multi-page) TIFF images.
 /// Result is stored directly to file so this method is perfect for very big images.
 /// </summary>
 /// <returns>A reference to the new image</returns>
 public static FileSystemTiff MergeToFile(TiffEncodingFormat format, string outfile, IEnumerable <Image> images)
 {
     return(new InMemoryTiff(images.First()).MergeToFile(outfile, images.Skip(1)));
 }
 /// <summary>
 /// Merge (multi-page) TIFF images
 /// For very big images consider using <seealso cref="MergeToFile"/>
 /// </summary>
 /// <returns></returns>
 public static InMemoryTiff Merge(TiffEncodingFormat format, params Image[] images)
 {
     return(Merge(format, images.Select(image => image)));
 }
 /// <summary>
 /// Merge (multi-page) TIFF images
 /// For very big images consider using <seealso cref="MergeToFile"/>
 /// </summary>
 public static FileSystemTiff Merge(TiffEncodingFormat format, string outFile, IEnumerable <Image> images)
 {
     return(InMemoryTiff.MergeToFile(format, outFile, images));
 }