Ejemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="compression"></param>
        public void Save(Stream fs, TiffCompressOption compression)
        {
            TiffBitmapEncoder encoder = new TiffBitmapEncoder {
                Compression = compression
            };

            foreach (var bitmap in _bitmapFrames)
            {
                encoder.Frames.Add(bitmap);
            }
            encoder.Save(fs);
        }
        public static void SaveToTiff(this BitmapSource image, string fileName, TiffCompressOption tiffCompressOption = TiffCompressOption.Default)
        {
            var ec = new TiffBitmapEncoder {
                Compression = tiffCompressOption
            };

            ec.Frames.Add(BitmapFrame.Create(image));

            using (var fileStream = new FileStream(fileName, FileMode.Create))
            {
                ec.Save(fileStream);
            }
        }
Ejemplo n.º 3
0
        private void SaveBitmapFrameAsTiffImage(BitmapFrame bitmapFrame, TiffCompressOption compressOption, string saveDirectory, string fileName)
        {
            TiffBitmapEncoder encoder = new TiffBitmapEncoder();

            encoder.Frames.Add(bitmapFrame);
            encoder.Compression = compressOption;

            string saveFilePath = Path.Combine(saveDirectory, fileName);

            using (FileStream fileStream = new FileStream(saveFilePath, FileMode.Create, FileAccess.Write))
            {
                encoder.Save(fileStream);
            }
        }
Ejemplo n.º 4
0
        private static BitmapEncoder CreateBitmapEncoder(bool convertToJpeg, TiffCompressOption compression)
        {
            if (convertToJpeg == true)
            {
                return(new JpegBitmapEncoder());
            }
            else
            {
                TiffBitmapEncoder encoder = new TiffBitmapEncoder();
                encoder.Compression = compression;

                return(encoder);
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// TIFF形式画像を出力する
        /// </summary>
        /// <param name="outputImg"></param>
        /// <param name="fileName">ファイル名</param>
        /// <param name="compress">圧縮の種類</param>
        public static void SaveAsTiff(this Image outputImg, string fileName, TiffCompressOption compress)
        {
            // TiffEncoderを作成する
            TiffBitmapEncoder encoder = new TiffBitmapEncoder();

            encoder.Compression = compress;
            // ページに追加する
            string tempFileName = System.IO.Path.GetTempFileName();

            outputImg.Save(tempFileName);
            BitmapFrame bmpFrame = BitmapFrame.Create(new Uri(tempFileName), BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);

            encoder.Frames.Add(bmpFrame);
            using (FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write))
            {
                encoder.Save(fs);
            }
            encoder.Dispatcher.InvokeShutdown();
            System.IO.File.Delete(tempFileName);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// TIFF形式画像を出力する
        /// </summary>
        /// <param name="outputImg"></param>
        /// <param name="fileName">ファイル名</param>
        /// <param name="compress">圧縮の種類</param>
        public static void SaveAsTiff2(this Image outputImg, string fileName, TiffCompressOption compress)
        {
            // TiffEncoderを作成する
            TiffBitmapEncoder encoder = new TiffBitmapEncoder();

            encoder.Compression = compress;
            // ページに追加する
            string tempFileName = System.IO.Path.GetTempFileName();

            using (FileStream imgStream = new FileStream(tempFileName, FileMode.Create, FileAccess.ReadWrite))
            {
                outputImg.Save(imgStream, ImageFormat.Bmp);
            }
            using (FileStream stream = new FileStream(tempFileName, FileMode.Open, FileAccess.Read))
            {
                BitmapFrame bmpFrame = BitmapFrame.Create(stream);
                encoder.Frames.Add(bmpFrame);
                using (FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write))
                {
                    encoder.Save(fs);
                }
            }
        }
Ejemplo n.º 7
0
        private void saveImage(int imageWidth, int imageHeight, string fileNameRaw, byte[] image1, byte[] image2, byte[] image3, byte[] image4, byte[] OD)
        {
            //String fileNameRaw = fileName; //fileName.Replace(@"\Pictures\", @"\Pictures\RAW\");
            String fileName;
            long   ms = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond;

            //Console.WriteLine(Convert.ToString(DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond - ms) + "ms elapsed (1) ...");

            #region saveOD
            // Saving OD :

            //if (showOD)
            //{
            //    Bitmap bmpOD = new Bitmap(imageWidth, imageHeight, PixelFormat.Format48bppRgb);
            //    Rectangle dim = new Rectangle(0, 0, bmpOD.Width, bmpOD.Height);

            //    try
            //    {
            //        BitmapData picdata = bmpOD.LockBits(dim, ImageLockMode.ReadWrite, bmpOD.PixelFormat);
            //        Marshal.Copy(OD, 0, picdata.Scan0, OD.Length);
            //        bmpOD.UnlockBits(picdata);

            //    }
            //    catch (Exception e)
            //    {
            //        MessageBox.Show("Error while trying to create optical density:/n" + e.ToString());
            //        return;
            //    }
            //    try
            //    {
            //        bmpOD.Save(fileNameRaw.Replace(".tif", "_OD.tif"));
            //    }
            //    catch
            //    {
            //        MessageBox.Show("Error while saving picture " + shotID);
            //    }
            //}

            // Save raw images

            //if (showRaw)
            //{
            //
            //}
            #endregion

            if (tiff)
            {
                //Save as TIFF

                try
                {
                    int stride = (imageWidth * 16 + 7) / 8;                                             //Stride = difference in array pos between two image rows: (ImageWidth * bpp + 7)/8
                    TiffCompressOption compr = TiffCompressOption.None;
                    if (tiffCompress)
                    {
                        compr = TiffCompressOption.Zip;
                    }

                    fileName = fileNameRaw.Replace(".tif", "_atoms.tif");
                    if (saveThisImage && System.IO.File.Exists(fileName))
                    {
                        Console.WriteLine("\n\n\n   !! Warning !!\n\n   Filename " + fileName + " already exists!");

                        while (System.IO.File.Exists(fileName))
                        {
                            fileName = fileName + ".bck";
                        }

                        Console.WriteLine("   Saving as " + fileName + "\n\n   Likely the program is corrupted, please restart.\n\n\n");
                    }

                    BitmapSource      bmp1Source = BitmapSource.Create(imageWidth, imageHeight, 96, 96, System.Windows.Media.PixelFormats.Gray16, null, image1, stride);
                    FileStream        bmp1stream = new FileStream(fileName, FileMode.Create);
                    TiffBitmapEncoder encoder1   = new TiffBitmapEncoder();
                    encoder1.Compression = compr;                    //TiffCompressOption.None;
                    encoder1.Frames.Add(BitmapFrame.Create(bmp1Source));
                    encoder1.Save(bmp1stream);

                    fileName = fileNameRaw.Replace(".tif", "_noatoms.tif");
                    if (saveThisImage && System.IO.File.Exists(fileName))
                    {
                        Console.WriteLine("\n\n\n   !! Warning !!\n\n   Filename " + fileName + " already exists!");

                        while (System.IO.File.Exists(fileName))
                        {
                            fileName = fileName + ".bck";
                        }

                        Console.WriteLine("   Saving as " + fileName + "\n\n   Likely the program is corrupted, please restart.\n\n\n");
                    }
                    BitmapSource      bmp2Source = BitmapSource.Create(imageWidth, imageHeight, 96, 96, System.Windows.Media.PixelFormats.Gray16, null, image2, stride);
                    FileStream        bmp2stream = new FileStream(fileName, FileMode.Create);
                    TiffBitmapEncoder encoder2   = new TiffBitmapEncoder();
                    encoder2.Compression = compr;                    //TiffCompressOption.None;
                    encoder2.Frames.Add(BitmapFrame.Create(bmp2Source));
                    encoder2.Save(bmp2stream);

                    if (saveDark)
                    {
                        fileName = fileNameRaw.Replace(".tif", "_dark1.tif");
                        if (saveThisImage && System.IO.File.Exists(fileName))
                        {
                            Console.WriteLine("\n\n\n   !! Warning !!\n\n   Filename " + fileName + " already exists!");

                            while (System.IO.File.Exists(fileName))
                            {
                                fileName = fileName + ".bck";
                            }

                            Console.WriteLine("   Saving as " + fileName + "\n\n   Likely the program is corrupted, please restart.\n\n\n");
                        }
                        BitmapSource      bmp3Source = BitmapSource.Create(imageWidth, imageHeight, 96, 96, System.Windows.Media.PixelFormats.Gray16, null, image3, stride);
                        FileStream        bmp3stream = new FileStream(fileName, FileMode.Create);
                        TiffBitmapEncoder encoder3   = new TiffBitmapEncoder();
                        encoder3.Compression = compr;                        //TiffCompressOption.None;
                        encoder3.Frames.Add(BitmapFrame.Create(bmp3Source));
                        encoder3.Save(bmp3stream);

                        fileName = fileNameRaw.Replace(".tif", "_dark2.tif");
                        if (saveThisImage && System.IO.File.Exists(fileName))
                        {
                            Console.WriteLine("\n\n\n   !! Warning !!\n\n   Filename " + fileName + " already exists!");

                            while (System.IO.File.Exists(fileName))
                            {
                                fileName = fileName + ".bck";
                            }

                            Console.WriteLine("   Saving as " + fileName + "\n\n   Likely the program is corrupted, please restart.\n\n\n");
                        }
                        BitmapSource      bmp4Source = BitmapSource.Create(imageWidth, imageHeight, 96, 96, System.Windows.Media.PixelFormats.Gray16, null, image4, stride);
                        FileStream        bmp4stream = new FileStream(fileName, FileMode.Create);
                        TiffBitmapEncoder encoder4   = new TiffBitmapEncoder();
                        encoder4.Compression = compr;                        //TiffCompressOption.None;
                        encoder4.Frames.Add(BitmapFrame.Create(bmp4Source));
                        encoder4.Save(bmp4stream);

                        bmp3stream.Close();
                        bmp4stream.Close();

                        bmp3Source.Dispatcher.InvokeShutdown();
                        bmp4Source.Dispatcher.InvokeShutdown();
                    }

                    bmp1stream.Close();
                    bmp2stream.Close();

                    bmp1Source.Dispatcher.InvokeShutdown();
                    bmp2Source.Dispatcher.InvokeShutdown();
                }
                catch (Exception e)
                {
                    Console.WriteLine("Error in saveImage while saving 48bitRGB TIFF");
                    System.IO.File.WriteAllText(Path.GetDirectoryName(Application.ExecutablePath) + @"\" + DateTime.Now.ToString("yyyyMMddHHmmssffff") + "saving.txt", "TIFF: " + e.ToString());
                }

                //Console.WriteLine(Convert.ToString(DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond - ms) + "ms elapsed (3) ...");
            }

            else if (png)
            {
                // Save as PNG

                try
                {
                    int stride = (imageWidth * 16 + 7) / 8;                                             //Stride = difference in array pos between two image rows: (ImageWidth * bpp + 7)/8

                    fileName = fileNameRaw.Replace(".png", "_atoms.png");
                    if (saveThisImage && System.IO.File.Exists(fileName))
                    {
                        Console.WriteLine("\n\n\n   !! Warning !!\n\n   Filename " + fileName + " already exists!");

                        while (System.IO.File.Exists(fileName))
                        {
                            fileName = fileName + ".bck";
                        }

                        Console.WriteLine("   Saving as " + fileName + "\n\n   Likely the program is corrupted, please restart.\n\n\n");
                    }
                    BitmapSource     bmp1Source = BitmapSource.Create(imageWidth, imageHeight, 96, 96, System.Windows.Media.PixelFormats.Gray16, null, image1, stride);
                    FileStream       bmp1stream = new FileStream(fileName, FileMode.Create);
                    PngBitmapEncoder encoder1   = new PngBitmapEncoder();
                    encoder1.Frames.Add(BitmapFrame.Create(bmp1Source));
                    encoder1.Save(bmp1stream);

                    fileName = fileNameRaw.Replace(".png", "_noatoms.png");
                    if (saveThisImage && System.IO.File.Exists(fileName))
                    {
                        Console.WriteLine("\n\n\n   !! Warning !!\n\n   Filename " + fileName + " already exists!");

                        while (System.IO.File.Exists(fileName))
                        {
                            fileName = fileName + ".bck";
                        }

                        Console.WriteLine("   Saving as " + fileName + "\n\n   Likely the program is corrupted, please restart.\n\n\n");
                    }
                    BitmapSource     bmp2Source = BitmapSource.Create(imageWidth, imageHeight, 96, 96, System.Windows.Media.PixelFormats.Gray16, null, image2, stride);
                    FileStream       bmp2stream = new FileStream(fileName, FileMode.Create);
                    PngBitmapEncoder encoder2   = new PngBitmapEncoder();
                    encoder2.Frames.Add(BitmapFrame.Create(bmp2Source));
                    encoder2.Save(bmp2stream);

                    if (saveDark)
                    {
                        fileName = fileNameRaw.Replace(".png", "_dark1.png");
                        if (saveThisImage && System.IO.File.Exists(fileName))
                        {
                            Console.WriteLine("\n\n\n   !! Warning !!\n\n   Filename " + fileName + " already exists!");

                            while (System.IO.File.Exists(fileName))
                            {
                                fileName = fileName + ".bck";
                            }

                            Console.WriteLine("   Saving as " + fileName + "\n\n   Likely the program is corrupted, please restart.\n\n\n");
                        }
                        BitmapSource     bmp3Source = BitmapSource.Create(imageWidth, imageHeight, 96, 96, System.Windows.Media.PixelFormats.Gray16, null, image3, stride);
                        FileStream       bmp3stream = new FileStream(fileName, FileMode.Create);
                        PngBitmapEncoder encoder3   = new PngBitmapEncoder();
                        encoder3.Frames.Add(BitmapFrame.Create(bmp3Source));
                        encoder3.Save(bmp3stream);

                        fileName = fileNameRaw.Replace(".png", "_dark2.png");
                        if (saveThisImage && System.IO.File.Exists(fileName))
                        {
                            Console.WriteLine("\n\n\n   !! Warning !!\n\n   Filename " + fileName + " already exists!");

                            while (System.IO.File.Exists(fileName))
                            {
                                fileName = fileName + ".bck";
                            }

                            Console.WriteLine("   Saving as " + fileName + "\n\n   Likely the program is corrupted, please restart.\n\n\n");
                        }
                        BitmapSource     bmp4Source = BitmapSource.Create(imageWidth, imageHeight, 96, 96, System.Windows.Media.PixelFormats.Gray16, null, image4, stride);
                        FileStream       bmp4stream = new FileStream(fileName, FileMode.Create);
                        PngBitmapEncoder encoder4   = new PngBitmapEncoder();
                        encoder4.Frames.Add(BitmapFrame.Create(bmp4Source));
                        encoder4.Save(bmp4stream);

                        bmp3stream.Close();
                        bmp4stream.Close();

                        bmp3Source.Dispatcher.InvokeShutdown();
                        bmp4Source.Dispatcher.InvokeShutdown();
                    }

                    bmp1stream.Close();
                    bmp2stream.Close();

                    bmp1Source.Dispatcher.InvokeShutdown();
                    bmp2Source.Dispatcher.InvokeShutdown();
                }
                catch (Exception e)
                {
                    Console.WriteLine("Error in saveImage while saving 48bitRGB PNG");
                    System.IO.File.WriteAllText(Path.GetDirectoryName(Application.ExecutablePath) + @"\" + DateTime.Now.ToString("yyyyMMddHHmmssffff") + "saving.txt", "PNG: " + e.ToString());
                }

                //Console.WriteLine(Convert.ToString(DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond - ms) + "ms elapsed (2) ...");
            }

            Console.WriteLine("\r   (Note: Saving done.)\n");
        }
Ejemplo n.º 8
0
		/// <summary>Creates a converted copy of the image (tiff formatted).</summary>
		public static byte[] ConvertTo_TiffByteArray(this BitmapSource input, TiffCompressOption compressOption = TiffCompressOption.None)
		{
			var encoder = new TiffBitmapEncoder {Compression = compressOption};
			return input.ConvertTo_UsingEncoder(encoder);
		}
Ejemplo n.º 9
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="compression"></param>
 public void Save(TiffCompressOption compression)
 {
     using (FileStream fs = new FileStream(this.FileName, FileMode.Create))
         this.Save(fs, compression);
 }
Ejemplo n.º 10
0
 public ImageOptions(int jpegQualityLevel, TiffCompressOption tiffCompression)
 {
     JpegQualityLevel = jpegQualityLevel;
     TiffCompression  = tiffCompression;
 }
Ejemplo n.º 11
0
        public static void SaveTiff(BitmapSource source, string fileName, int dpi, TiffCompressOption compression)
        {
            if (source == null) throw new ArgumentNullException("source");
            if (String.IsNullOrEmpty(fileName)) throw new ArgumentNullException("fileName");
            //if (File.Exists(fileName)) File.Delete(fileName);

            BitmapMetadata metadata = GetBitmapMetadata("tiff");

            using (FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write))
            {
                TiffBitmapEncoder encoder = new TiffBitmapEncoder();
                encoder.Compression = compression;
                encoder.Frames.Add(BitmapFrame.Create(source, null, metadata, null));
                encoder.Save(fs);
                fs.Close();
            }
        }
Ejemplo n.º 12
0
        public static void SaveMergeTiff(string[] fileNames, string outputFileName, int dpi, TiffCompressOption compresion)
        {
            if (fileNames == null || fileNames.Count() == 0) return;
            if (String.IsNullOrEmpty(outputFileName)) new ArgumentNullException("outputFileName");
            if (File.Exists(outputFileName)) File.Delete(outputFileName);

            using (FileStream fs = new FileStream(outputFileName, FileMode.Create, FileAccess.Write))
            {
                TiffBitmapEncoder encoder = new TiffBitmapEncoder();

                foreach (var fileName in fileNames)
                {
                    BitmapSource source = Load(fileName);
                    int bytesPerPixel = (source.Format.BitsPerPixel + 7) / 8;
                    int stride = source.PixelWidth * bytesPerPixel;
                    byte[] bitmapArray = new byte[source.PixelHeight * stride];
                    source.CopyPixels(bitmapArray, stride, 0);
                    BitmapSource output = BitmapSource.Create(source.PixelWidth, source.PixelHeight, dpi, dpi, source.Format, source.Palette, bitmapArray, stride);

                    encoder.Compression = compresion;
                    encoder.Frames.Add(BitmapFrame.Create(output));
                }

                encoder.Save(fs);
                fs.Close();
            }
        }
Ejemplo n.º 13
0
 public static Task SaveToTiffAsync(this BitmapSource image, string fileName, TiffCompressOption tiffCompressOption = TiffCompressOption.Default)
 {
     return(Task.Run(() => SaveToTiff(image, fileName, tiffCompressOption)));
 }
Ejemplo n.º 14
0
 public ImageOptions(int jpegQualityLevel, TiffCompressOption tiffCompression)
 {
     JpegQualityLevel = jpegQualityLevel;
     TiffCompression = tiffCompression;
 }