/// <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))); }
/// <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))); }
/// <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))); }
/// <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))); }
/// <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))); }
protected AbstractTiff() { this.DefaultFormat = TiffEncodingFormats.TiffRegular; this.MemoryStream = new MemoryStream(); }
/// <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)); }
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)); }