Esempio n. 1
0
        public static void CreateTiffImage(Image[] images, string path, TiffCompressType compressType)
        {
            if (images == null || images.Length == 0)
            {
                return;
            }
            if (System.IO.File.Exists(path))
            {
                System.IO.File.Delete(path);
            }
            var coderInfo = getCodecForstring("image/tiff");
            EncoderParameters encoderParams = null;
            Image             tiffImg       = null;

            if (images.Length == 1)
            {
                encoderParams = new EncoderParameters(1);
                var param1 = new EncoderParameter(System.Drawing.Imaging.Encoder.Compression, GetCompressType(compressType));
                encoderParams.Param[0] = param1;
                tiffImg = new Bitmap(images[0]);
                tiffImg.Save(path, coderInfo, encoderParams);
            }
            else
            {
                encoderParams = new EncoderParameters(2);
                var param1 = new EncoderParameter(System.Drawing.Imaging.Encoder.SaveFlag, (long)EncoderValue.MultiFrame);
                var param2 = new EncoderParameter(System.Drawing.Imaging.Encoder.Compression, GetCompressType(compressType));
                encoderParams.Param[0] = param1;
                encoderParams.Param[1] = param2;
                using (System.IO.FileStream stream = new System.IO.FileStream(path, System.IO.FileMode.CreateNew))
                {
                    tiffImg = new Bitmap(images[0]);
                    tiffImg.Save(stream, coderInfo, encoderParams);
                    for (int i = 1; i < images.Length; i++)
                    {
                        encoderParams.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.SaveFlag, (long)EncoderValue.FrameDimensionPage);
                        tiffImg.SaveAdd(images[i], encoderParams);
                    }
                    encoderParams.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.SaveFlag, (long)EncoderValue.Flush);
                    tiffImg.SaveAdd(encoderParams);
                }
            }
        }
Esempio n. 2
0
        private static long GetCompressType(TiffCompressType compressType)
        {
            switch (compressType)
            {
            case TiffCompressType.LZW:
                return((long)EncoderValue.CompressionLZW);

            case TiffCompressType.CCITT_GROUP3_MH:
                return((long)EncoderValue.CompressionCCITT3);

            case TiffCompressType.CCITT_GROUP4_MMR:
                return((long)EncoderValue.CompressionCCITT4);

            case TiffCompressType.PACK_BITS:
                return((long)EncoderValue.CompressionRle);

            default:
                return((long)EncoderValue.CompressionNone);
            }
        }