c# ile resim boyutlandırma ve isimlendirme

Resim boyutlandırma ve resimleri yeniden isimlendirmek içn aşağıdaki windows form uyguması kodunu kullanabilirsiniz.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using System.Threading.Tasks;

namespace resimboyutlandır
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }


        private async void button1_Click(object sender, EventArgs e)
        {
            using (FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog())
            {
                folderBrowserDialog.Description = "Lütfen kaynak klasörleri seçin.";
                folderBrowserDialog.ShowNewFolderButton = false;
                folderBrowserDialog.SelectedPath = Environment.GetFolderPath(Environment.SpecialFolder.MyComputer);
                folderBrowserDialog.RootFolder = Environment.SpecialFolder.Desktop;
                folderBrowserDialog.SelectedPath = @"C:\";

                if (folderBrowserDialog.ShowDialog() == DialogResult.OK)
                {
                    double yukseklikcm = Convert.ToDouble(textBox1.Text);
                    double genislikcm = Convert.ToDouble(textBox2.Text);
                    double dpi = Convert.ToDouble(textBox3.Text);

                    double genislikpixel = CmToPixel(genislikcm, dpi);
                    double yukseklikpixel = CmToPixel(yukseklikcm, dpi);

                    // Hedef klasörü seç
                    using (FolderBrowserDialog hedefFolderBrowserDialog = new FolderBrowserDialog())
                    {
                        hedefFolderBrowserDialog.Description = "Lütfen hedef klasörü seçin.";
                        hedefFolderBrowserDialog.ShowNewFolderButton = true;
                        hedefFolderBrowserDialog.SelectedPath = Environment.GetFolderPath(Environment.SpecialFolder.MyComputer);
                        hedefFolderBrowserDialog.RootFolder = Environment.SpecialFolder.Desktop;

                        if (hedefFolderBrowserDialog.ShowDialog() == DialogResult.OK)
                        {
                            string hedefKlasor = hedefFolderBrowserDialog.SelectedPath;

                          

                            // Her bir klasördeki resim dosyalarını al ve işle
                            await Task.Run(() => BoyutlandirVeKaydetTumResimler(folderBrowserDialog.SelectedPath, genislikpixel, yukseklikpixel, hedefKlasor));

                            MessageBox.Show("Toplu boyutlandırma işlemi tamamlandı.");
                        }
                    }
                }
            }
        }

        void BoyutlandirVeKaydetTumResimler(string kaynakKlasor, double genislikCm, double yukseklikCm, string hedefKlasor)
        {
            string[] resimDosyalari = Directory.GetFiles(kaynakKlasor, "*.jpg", SearchOption.AllDirectories)
                .Concat(Directory.GetFiles(kaynakKlasor, "*.jpeg", SearchOption.AllDirectories))
                .Concat(Directory.GetFiles(kaynakKlasor, "*.png", SearchOption.AllDirectories))
                .Concat(Directory.GetFiles(kaynakKlasor, "*.gif", SearchOption.AllDirectories))
                .Concat(Directory.GetFiles(kaynakKlasor, "*.bmp", SearchOption.AllDirectories))
                .ToArray();

    

            int dosyaSayac = 1;

            foreach (string dosyaYolu in resimDosyalari)
            {
                BoyutlandirVeKaydet(dosyaYolu, genislikCm, yukseklikCm, hedefKlasor, ref dosyaSayac);
                // ProgressBar'ı güncelle
                Invoke(new Action(() => label4.Text = "Donustürülen Resim: " + dosyaSayac.ToString()));
             
                dosyaSayac++;
            }
        }

        void BoyutlandirVeKaydet(string dosyaYolu, double genislikCm, double yukseklikCm, string hedefKlasor, ref int dosyaSayac)
        {
            // Resmi yükle
            Image resim = Image.FromFile(dosyaYolu);

            // Oranları hesapla
            double oranGenislik = genislikCm / resim.Width;
            double oranYukseklik = yukseklikCm / resim.Height;

            // Oranları kullanarak yeni boyutları hesapla
            int yeniGenislik = (int)(resim.Width * oranGenislik);
            int yeniYukseklik = (int)(resim.Height * oranYukseklik);

            // Yeni boyutlu resmi oluştur
            Image yeniResim = new Bitmap(resim, yeniGenislik, yeniYukseklik);

            // Orijinal resmi serbest bırak
            resim.Dispose();

            // Yeni dosya adını oluştur
            string yeniDosyaAdi = textBox4.Text+ $"{dosyaSayac:D4}";

            // Yeni resmi hedef klasöre ve yeni dosya adıyla kaydet
            string hedefDosyaYolu = Path.Combine(hedefKlasor, $"{yeniDosyaAdi}.jpg");
            yeniResim.Save(hedefDosyaYolu, System.Drawing.Imaging.ImageFormat.Jpeg);
        }

        static double PixelToCm(double pixel, double dpi)
        {
            return pixel / dpi * 2.54;
        }

        static double CmToPixel(double cm, double dpi)
        {
            return cm * dpi / 2.54;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            label1.Text = "Yükseklik cm";
            label2.Text = "Genişlik cm";
            label3.Text = "DPİ";
            label4.Text = "...";
            label5.Text = "Resim İsmi:";

            textBox1.Text = "23,5";
            textBox2.Text = "16";
            textBox3.Text = "300";
            textBox4.Text = "samsun-";
        }
    }
}

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir