public bool SaveMultipleImages(Image[] sourceImages, string targetFile) { bool response = false; try { assignEncoder(); // Merge individual Images into one Image // First page Image finalImage = sourceImages[0]; finalImage.Save(targetFile, tifImageCodecInfo, tifEncoderParametersPage1); // All other pages int lastpage = sourceImages.Length; for (int i = 1; i < sourceImages.Length; i++) { finalImage.SaveAdd(sourceImages[i], tifEncoderParametersPageX); } // Last page finalImage.SaveAdd(tifEncoderParametersPageLast); finalImage.Dispose(); response = true; } catch (Exception ex) { Console.WriteLine("Error saving merged file: " + ex.Message); throw new Exception("Error saving merged file: " + ex.Message); } return response; }
private void assignEncoder() { try { if (encoderAssigned == true) return; foreach (ImageCodecInfo ici in ImageCodecInfo.GetImageEncoders()) { if (ici.MimeType == "image/tiff") { tifImageCodecInfo = ici; } } tifEncoderSaveFlag = System.Drawing.Imaging.Encoder.SaveFlag; tifEncoderCompression = System.Drawing.Imaging.Encoder.Compression; tifEncoderColorDepth = System.Drawing.Imaging.Encoder.ColorDepth; tifEncoderParameterMultiFrame = new EncoderParameter(tifEncoderSaveFlag, (long)EncoderValue.MultiFrame); tifEncoderParameterFrameDimensionPage = new EncoderParameter(tifEncoderSaveFlag, (long)EncoderValue.FrameDimensionPage); tifEncoderParameterFlush = new EncoderParameter(tifEncoderSaveFlag, (long)EncoderValue.Flush); tifEncoderParameterCompression = new EncoderParameter(tifEncoderCompression, (long)EncoderValue.CompressionRle); tifEncoderParameterLastFrame = new EncoderParameter(tifEncoderSaveFlag, (long)EncoderValue.LastFrame); tifEncoderParameter24BPP = new EncoderParameter(tifEncoderColorDepth, (long)24); tifEncoderParameter1BPP = new EncoderParameter(tifEncoderColorDepth, (long)8); // ******************************************************************* // // *** Have only 1 of the following 3 groups assigned for encoders *** // // ******************************************************************* // // Regular tifEncoderParametersPage1 = new EncoderParameters(1); tifEncoderParametersPage1.Param[0] = tifEncoderParameterMultiFrame; tifEncoderParametersPageX = new EncoderParameters(1); tifEncoderParametersPageX.Param[0] = tifEncoderParameterFrameDimensionPage; tifEncoderParametersPageLast = new EncoderParameters(1); tifEncoderParametersPageLast.Param[0] = tifEncoderParameterFlush; encoderAssigned = true; } catch (Exception ex) { Console.WriteLine(ex.Message); throw ex; } }
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)