none
Multipage Tif dosyalarını resim resim ayırıp tıklananı picturebox üstünde göstermek? RRS feed

  • Genel Tartışma

  • void GetImageList(string filePath)
            {
                try
                {               
                    Bitmap tiffImage = (Bitmap)Image.FromFile(filePath);               
                    Guid objGuid = tiffImage.FrameDimensionsList[0];               
                    FrameDimension dimension = new FrameDimension(objGuid);               
                    int noOfPages = tiffImage.GetFrameCount(dimension);
                    Bitmap activeFrameImage;
                    foreach (Guid guid in tiffImage.FrameDimensionsList)
                    {
                        for (int index = 0; index < noOfPages; index++)
                        {
                            FrameDimension currentFrame = new FrameDimension(guid);
                            tiffImage.SelectActiveFrame(currentFrame, index);
                            activeFrameImage = new Bitmap(tiffImage, pictureBox1.Width, pictureBox1.Height);
                            Button buton = new Button();
                            buton.Width = buton.Height = 100;
                            buton.Margin = new Padding(5);
                            buton.BackgroundImage = activeFrameImage;                        
                            buton.BackgroundImageLayout = ImageLayout.Stretch;
                            buton.Text = string.Format("{0}", index + 1);
                            buton.TextAlign = ContentAlignment.TopLeft;
                            buton.Tag = index;
                            buton.Cursor = Cursors.Hand;
                            flowLayoutPanel1.Controls.Add(buton);
                            buton.Click += (o, e) =>
                            {
                                Button selectedImage = o as Button;
                                tiffImage.SelectActiveFrame(FrameDimension.Page, Convert.ToInt32(selectedImage.Tag));
                                activeFrameImage = new Bitmap(tiffImage, pictureBox1.Width, pictureBox1.Height);
                                pictureBox1.Image = activeFrameImage;
                            };
                        }
                        tiffImage.SelectActiveFrame(FrameDimension.Page, 0);
                        activeFrameImage = new Bitmap(tiffImage, pictureBox1.Width, pictureBox1.Height);
                        pictureBox1.Image = activeFrameImage;
                    }                
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
    
    string filePath = @"C:\Users\ELARSI\Desktop\test\multipage2.tif";
                GetImageList(filePath);

    Merhabalar,

    Multipage tif dosyasının içinde kaç tane kare varsa flowlayoutpanel içine butonlar şeklinde ekletiyorum ve ordan tıklanan resmide picturebox üstünde gösterebiliyorum. Kod normalde çalışıyor ama tif dosyasının içindeki resim adeti arttığında(75-100 kare) yavaş açılıyor, acaba bunu daha performanslı hale nasıl getirebilirim?

    30 Eylül 2016 Cuma 13:02