Created
April 30, 2016 13:30
-
-
Save seancallaway/81e6a76190c4b18dbddb5ac7ec45cd6d to your computer and use it in GitHub Desktop.
Code For Merging TIFFs in C#
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.Text; | |
using System.Drawing; | |
using System.IO; | |
using System.Drawing.Imaging; | |
private static void MergeTiffs(List<Bitmap> bmps, string filename) | |
{ | |
// Save first bitmap to memory as TIFF | |
MemoryStream byteStream = new MemoryStream(); | |
bmps[0].Save(byteStream, ImageFormat.Tiff); | |
Image tiff = Image.FromStream(byteStream); | |
// Prepare encoders | |
ImageCodecInfo encInfo = GetEncoderInfo("image/tiff"); | |
EncoderParameters encParams = new EncoderParameters(2); | |
EncoderParameter param = new EncoderParameter(System.Drawing.Imaging.Encoder.Compression, (long)EncoderValue.CompressionCCITT4); | |
encParams.Param[0] = param; | |
param = new EncoderParameter(System.Drawing.Imaging.Encoder.SaveFlag, (long)EncoderValue.MultiFrame); | |
encParams.Param[1] = param; | |
// Save to file | |
tiff.Save(filename, encInfo, encParams); | |
for (int i = 1; i < bmps.Count; i++) | |
{ | |
EncoderParameters encoderParams = new EncoderParameters(2); | |
EncoderParameter SaveParam = new EncoderParameter(System.Drawing.Imaging.Encoder.SaveFlag, (long)EncoderValue.FrameDimensionPage); | |
EncoderParameter CompParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Compression, (long)EncoderValue.CompressionCCITT4); | |
encoderParams.Param[0] = CompParam; | |
encoderParams.Param[1] = SaveParam; | |
bmps[i].Save(byteStream, ImageFormat.Tiff); | |
tiff.SaveAdd(Image.FromStream(byteStream), encoderParams); | |
} | |
EncoderParameter FlushParam = new EncoderParameter(System.Drawing.Imaging.Encoder.SaveFlag, (long)EncoderValue.Flush); | |
encParams = new EncoderParameters(1); | |
encParams.Param[0] = FlushParam; | |
tiff.SaveAdd(encParams); | |
} | |
private static ImageCodecInfo GetEncoderInfo(String mimeType) | |
{ | |
int j; | |
ImageCodecInfo[] encoders; | |
encoders = ImageCodecInfo.GetImageEncoders(); | |
for (j = 0; j < encoders.Length; ++j) | |
{ | |
if (encoders[j].MimeType == mimeType) | |
return encoders[j]; | |
} | |
return null; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment