public void MergeTiffPages(string str_DestinationPath, string[] sourceFiles) { System.Drawing.Imaging.ImageCodecInfo codec = null; foreach (System.Drawing.Imaging.ImageCodecInfo cCodec in System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders()) { if (cCodec.CodecName == "Built-in TIFF Codec") { codec = cCodec; } } try { System.Drawing.Imaging.EncoderParameters imagePararms = new System.Drawing.Imaging.EncoderParameters(1); imagePararms.Param[0] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.SaveFlag, (long)System.Drawing.Imaging.EncoderValue.MultiFrame); if (sourceFiles.Length == 1) { System.IO.File.Copy((string)sourceFiles[0], str_DestinationPath, true); } else if (sourceFiles.Length >= 1) { System.Drawing.Image DestinationImage = (System.Drawing.Image)(new System.Drawing.Bitmap((string)System.Configuration.ConfigurationSettings.AppSettings["Path"] + sourceFiles[0])); DestinationImage.Save(str_DestinationPath, codec, imagePararms); imagePararms.Param[0] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.SaveFlag, (long)System.Drawing.Imaging.EncoderValue.FrameDimensionPage); for (int i = 0; i < sourceFiles.Length - 1; i++) { System.Drawing.Image img = (System.Drawing.Image)(new System.Drawing.Bitmap((string)sourceFiles[i])); DestinationImage.SaveAdd(img, imagePararms); img.Dispose(); } imagePararms.Param[0] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.SaveFlag, (long)System.Drawing.Imaging.EncoderValue.Flush); DestinationImage.SaveAdd(imagePararms); imagePararms.Dispose(); DestinationImage.Dispose(); } } catch (Exception ex) { } }
private void SaveImage(System.Drawing.Image image, string suffix) { // store the resolution in output file. // Call this method after actual draw because it may affect drawing the text if (image is Bitmap) { (image as Bitmap).SetResolution(ResolutionX, ResolutionY); } if (IsMultiFrameTiff) { // select the image encoder ImageCodecInfo info = ExportUtils.GetCodec("image/tiff"); EncoderParameters ep = new EncoderParameters(2); ep.Param[0] = new EncoderParameter(Encoder.Compression, MonochromeTiff ? (long)MonochromeTiffCompression : (long)EncoderValue.CompressionLZW); if (image == masterTiffImage) { // save the master bitmap if (MonochromeTiff) { masterTiffImage = ConvertToBitonal(image as Bitmap); } ep.Param[1] = new EncoderParameter(Encoder.SaveFlag, (long)EncoderValue.MultiFrame); masterTiffImage.Save(Stream, info, ep); } else { // save the frame if (MonochromeTiff) { System.Drawing.Image oldImage = image; image = ConvertToBitonal(image as Bitmap); oldImage.Dispose(); } ep.Param[1] = new EncoderParameter(Encoder.SaveFlag, (long)EncoderValue.FrameDimensionPage); masterTiffImage.SaveAdd(image, ep); } } else if (ImageFormat != ImageExportFormat.Metafile) { string extension = Path.GetExtension(FileName); string fileName = Path.ChangeExtension(FileName, suffix + extension); // empty suffix means that we should use the Stream that was created in the ExportBase Stream stream = suffix == "" ? Stream : new FileStream(fileName, FileMode.Create); if (suffix != "") { GeneratedFiles.Add(fileName); } if (ImageFormat == ImageExportFormat.Jpeg) { ExportUtils.SaveJpeg(image, stream, JpegQuality); } else if (ImageFormat == ImageExportFormat.Tiff && MonochromeTiff) { // handle monochrome tiff separately ImageCodecInfo info = ExportUtils.GetCodec("image/tiff"); EncoderParameters ep = new EncoderParameters(); ep.Param[0] = new EncoderParameter(Encoder.Compression, (long)MonochromeTiffCompression); using (Bitmap bwImage = ConvertToBitonal(image as Bitmap)) { bwImage.Save(stream, info, ep); } } else { ImageFormat format = System.Drawing.Imaging.ImageFormat.Bmp; switch (ImageFormat) { case ImageExportFormat.Gif: format = System.Drawing.Imaging.ImageFormat.Gif; break; case ImageExportFormat.Png: format = System.Drawing.Imaging.ImageFormat.Png; break; case ImageExportFormat.Tiff: format = System.Drawing.Imaging.ImageFormat.Tiff; break; } image.Save(stream, format); } if (suffix != "") { stream.Dispose(); } } if (image != masterTiffImage) { image.Dispose(); } }
public void Append(byte[] bytes) { using (var ms = new MemoryStream(bytes)) { switch (LibPDFTools.GetImageFileType(bytes)) { case ImageFileType.PDF: using (var pdfDoc = new PDFLibNet.PDFWrapper("")) { pdfDoc.LoadPDF(ms); for (var i = 1; i <= pdfDoc.PageCount; i++) { pdfDoc.CurrentPage = i; pdfDoc.CurrentX = 0; pdfDoc.CurrentY = 0; pdfDoc.RenderDPI = this.resolution; Bitmap pageBuffer = null; using (var oPictureBox = new PictureBox()) { pdfDoc.RenderPage(oPictureBox.Handle); pageBuffer = new Bitmap(pdfDoc.PageWidth, pdfDoc.PageHeight); pdfDoc.ClientBounds = new System.Drawing.Rectangle(0, 0, pdfDoc.PageWidth, pdfDoc.PageHeight); using (var g = Graphics.FromImage(pageBuffer)) { var hdc = g.GetHdc(); pdfDoc.DrawPageHDC(hdc); g.ReleaseHdc(); } } SaveAddTiffPage(pageBuffer); pageBuffer.Dispose(); currPageNum++; } } break; case ImageFileType.TIFF: { using (var image = System.Drawing.Image.FromStream(ms)) { var fd = new System.Drawing.Imaging.FrameDimension(image.FrameDimensionsList[0]); int numberOfPages = image.GetFrameCount(fd); for (int pageNum = 0; pageNum < numberOfPages; pageNum++) { image.SelectActiveFrame(fd, pageNum); if (currPageNum == 0) { backbuffer = (System.Drawing.Image)image.Clone(); backbuffer.Save(outStream, codec, encoderParameters_MultiFrame); } else { backbuffer.SaveAdd(image, encoderParameters_FrameDimensionPage); } currPageNum++; } } } break; default: { var pageBuffer = System.Drawing.Image.FromStream(ms); SaveAddTiffPage(pageBuffer); } currPageNum++; break; } } }
private static void TiffCompress(string SourcePath) { System.Drawing.Image image = null; try { var DocOutputMemStream = new MemoryStream(); image = System.Drawing.Image.FromFile(SourcePath); var PageCount = image.GetFrameCount(FrameDimension.Page); //Tiff ImageCodecInfo myImageCodecInfo; System.Drawing.Imaging.Encoder myEncoder; EncoderParameter myEncoderParameter; EncoderParameters myEncoderParameters; myImageCodecInfo = ImageCodecInfo.GetImageEncoders().First(k => k.MimeType == "image/tiff"); myEncoder = System.Drawing.Imaging.Encoder.Compression; myEncoderParameters = new EncoderParameters(2); myEncoderParameter = new EncoderParameter(myEncoder, (long)EncoderValue.CompressionCCITT4); myEncoderParameters.Param[0] = myEncoderParameter; //End tiff PageCount = 3; for (int index = 0; index < PageCount; index++) { image.SelectActiveFrame(FrameDimension.Page, index); //Threshold System.Drawing.Image frame = image; if (index == 0) { // Initialize the first frame of multipage tiff. myEncoderParameters.Param[1] = new EncoderParameter(System.Drawing.Imaging.Encoder.SaveFlag, (long)EncoderValue.MultiFrame); frame.Save(DocOutputMemStream, myImageCodecInfo, myEncoderParameters); } else { // Add additional frames. myEncoderParameters.Param[1] = new EncoderParameter(System.Drawing.Imaging.Encoder.SaveFlag, (long)EncoderValue.FrameDimensionPage); frame.SaveAdd(frame, myEncoderParameters); } if (index == PageCount - 1) { // When it is the last frame, flush the resources and closing. myEncoderParameters.Param[1] = new EncoderParameter(System.Drawing.Imaging.Encoder.SaveFlag, (long)EncoderValue.Flush); frame.SaveAdd(myEncoderParameters); } } //image.Save(@"D:\ENADOC\Sample docs\TIFF\Sample2.tiff"); File.WriteAllBytes(@"D:\ENADOC\Sample docs\TIFF\Sample2.tiff", DocOutputMemStream.ToArray()); image.Dispose(); } catch (Exception ex) { } }
private static byte[] TiffCompress(string SourcePath, int[] pages) { Image image = null; try { var DocOutputMemStream = new MemoryStream(); image = System.Drawing.Image.FromFile(SourcePath); var PageCount = image.GetFrameCount(FrameDimension.Page); //Tiff ImageCodecInfo myImageCodecInfo = ImageCodecInfo.GetImageEncoders().First(k => k.MimeType == "image/tiff"); System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Compression; EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, (long)EncoderValue.CompressionCCITT4); EncoderParameters myEncoderParameters = new EncoderParameters(2); myEncoderParameters.Param[0] = myEncoderParameter; //End tiff for (int index = 1; index < PageCount; index++) { if (pages.Any(p => p == index)) { image.SelectActiveFrame(FrameDimension.Page, index); //Threshold System.Drawing.Image frame = image; if (index == 1) { // Initialize the first frame of multipage tiff. myEncoderParameters.Param[1] = new EncoderParameter(System.Drawing.Imaging.Encoder.SaveFlag, (long)EncoderValue.MultiFrame); frame.Save(DocOutputMemStream, myImageCodecInfo, myEncoderParameters); } else { // Add additional frames. myEncoderParameters.Param[1] = new EncoderParameter(System.Drawing.Imaging.Encoder.SaveFlag, (long)EncoderValue.FrameDimensionPage); frame.SaveAdd(frame, myEncoderParameters); } if (index == PageCount - 1) { // When it is the last frame, flush the resources and closing. myEncoderParameters.Param[1] = new EncoderParameter(System.Drawing.Imaging.Encoder.SaveFlag, (long)EncoderValue.Flush); frame.SaveAdd(myEncoderParameters); } } } //image.Dispose(); using (var m = new MemoryStream()) { image.Save(m, ImageFormat.Tiff); return(m.ToArray()); } } catch (Exception ex) { image.Dispose(); return(null); } }
public static void ConvertToTiff(string[] fileNames, string tiffPath) { EncoderParameters encoderParams = new EncoderParameters(1); ImageCodecInfo tiffCodecInfo = ImageCodecInfo.GetImageEncoders() .First(ie => ie.MimeType == "image/tiff"); System.Drawing.Image tiffImg = null; conn.Open(); try { for (int i = 0; i < fileNames.Length; i++) { if (i == 0) { // Initialize the first frame of multipage tiff. tiffImg = System.Drawing.Image.FromFile(fileNames[i]); encoderParams.Param[0] = new EncoderParameter( System.Drawing.Imaging.Encoder.SaveFlag, (long)EncoderValue.MultiFrame); tiffImg.Save(tiffPath, tiffCodecInfo, encoderParams); } else { // Add additional frames. encoderParams.Param[0] = new EncoderParameter( System.Drawing.Imaging.Encoder.SaveFlag, (long)EncoderValue.FrameDimensionPage); using (System.Drawing.Image frame = System.Drawing.Image.FromFile(fileNames[i])) { tiffImg.SaveAdd(frame, encoderParams); } } string sqlcmd = "INSERT INTO tiffconvinfo (source_path,destination_path,conversion_datetime,db_username,computer_name,image_size_in_kb) VALUES (@source, @destination, @date, @user, @comp, @size)"; MySqlCommand cmd = new MySqlCommand(sqlcmd, conn); cmd.Parameters.AddWithValue("@source", fileNames[i]); //path to every image to be converted cmd.Parameters.AddWithValue("@destination", tiffPath); //destination tiff file path cmd.Parameters.AddWithValue("@date", DateTime.Now); //current date and time of computer cmd.Parameters.AddWithValue("@user", username); //current loged user cmd.Parameters.AddWithValue("@comp", Environment.MachineName); // name of local computer float sz = (float)new FileInfo(fileNames[i]).Length / (float)1024; //calculating image size in bytes for every image cmd.Parameters.AddWithValue("@size", sz); cmd.ExecuteNonQuery(); if (i == fileNames.Length - 1) { // When we added the last frame,we flush the resources and close. encoderParams.Param[0] = new EncoderParameter( System.Drawing.Imaging.Encoder.SaveFlag, (long)EncoderValue.Flush); tiffImg.SaveAdd(encoderParams); } } } finally { if (tiffImg != null) { tiffImg.Dispose(); tiffImg = null; } } }
private static void saveImageExistingSinglePage(Image[] bmp, Image origionalFile, string location) { try { //Now load the Codecs ImageCodecInfo codecInfo = getCodec(); Encoder saveEncoder; Encoder compressionEncoder; EncoderParameter saveEncodeParam; EncoderParameter compressionEncodeParam; EncoderParameters encoderParams = new EncoderParameters(2); saveEncoder = Encoder.SaveFlag; compressionEncoder = Encoder.Compression; // Save the first page (frame). saveEncodeParam = new EncoderParameter(saveEncoder, (long)EncoderValue.MultiFrame); compressionEncodeParam = new EncoderParameter(compressionEncoder, (long)EncoderValue.CompressionCCITT4); encoderParams.Param[0] = compressionEncodeParam; encoderParams.Param[1] = saveEncodeParam; origionalFile = ConvertToBitonal((Bitmap)origionalFile); origionalFile.Save(location, codecInfo, encoderParams); for (int i = 0; i < bmp.Length; i++) { saveEncodeParam = new EncoderParameter(saveEncoder, (long)EncoderValue.FrameDimensionPage); compressionEncodeParam = new EncoderParameter(compressionEncoder, (long)EncoderValue.CompressionCCITT4); encoderParams.Param[0] = compressionEncodeParam; encoderParams.Param[1] = saveEncodeParam; origionalFile.SaveAdd(bmp[i], encoderParams); } saveEncodeParam = new EncoderParameter(saveEncoder, (long)EncoderValue.Flush); encoderParams.Param[0] = saveEncodeParam; origionalFile.SaveAdd(encoderParams); } catch (System.Exception ee) { throw ee; } }