Example #1
0
        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)
            { }
        }
Example #2
0
        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();
            }
        }
Example #3
0
        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;
                }
            }
        }
Example #4
0
        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)
            {
            }
        }
Example #5
0
        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);
            }
        }
Example #6
0
        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;
                }
            }
        }
Example #7
0
        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;
            }
        }