Resim Boyutlandırıcı

Centeglassered

Kızıltaş Madencisi
En iyi cevaplar
0
Merhaba dostlar bu yazıda size yeni yaptığım bir programı anlatacağım.

Açıklama
Amacıyla başlayalım! Bu program ile resimlerinizi boyutlandırabilir, türlerini değiştirebilirsiniz. Peki bunu nerede kullanacaksınız? Mesela bir resmi paylaşmadan daha küçük olması için PNG den JPEG e çevirebilirsiniz. Ya da Minecraft kafanızı profil resmi olarak kullanmak için boyutunu x8 den x256 ya getirebilirsiniz. Tabii "Bunu yapan bir sürü profesyonel program var neden bunu kullanayım?" derseniz şöyle söyleyeyim; o programların çoğu resmi dağıtıyor. Bunun örneğini şöyle verebilirim;

Bu benim kafamın paint.net ile büyütülmüşü;




Bir de bu programla büyütülmüşe bakın;



Kullanımı
Kullanımı ile devam ediyoruz. Programı açtığınızda olduğu konuma 2 yeni klasör ekleyecek. İlki girdi, ikincisi çıktı adlı klasörlerin ne işe yaradığı zaten belli. İşlem yapacağınız resimleri girdi klasörüne atın. Daha sonra resim adını girdi kutucuğuna yazın. Resmin şu an ki türünü sağdaki kutucuktan seçin. Hangi boyutta olmasını istiyorsanız genişlik ve yükseklik kısmına yazın. Eğer resmin aynı kalmasını sadece türünün değişmesini istiyorsanız aynı genişlik ve yüksekliği yazmak zorundasınız. Daha sonra BOYUTLANDIR butonuna basın. Bir hata alırsanız yaptıklarınızı kontrol edin. Ayrıca önemli not; bu aşamada resim belleğe kaydedilir. Yani abartı genişlik ve yükseklik girdiyseniz bilgisayarınız donabilir. Daha sonra resmin hangi türde yazılmasını istiyorsanız onu seçin. Son olarak da YAZ butonuna basın. Bu çıktı klasörüne sonuç resmini yazacaktır.



Bağlantılar
Linki görebilmek için üye olmanız gerekiyor. Giriş yap veya üye ol.

Linki görebilmek için üye olmanız gerekiyor. Giriş yap veya üye ol.


Kaynak Kodu

Ana.java
Kod:
package tr.centeglassered.resimboyutlandirici;

import static tr.centeglassered.resimboyutlandirici.Yardimci.basari;
import static tr.centeglassered.resimboyutlandirici.Yardimci.hata;
import static tr.centeglassered.resimboyutlandirici.Yardimci.klasorleriKontrolEt;

import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.UIManager;

import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;

public class Ana {

    private static Font Aldo_PC;
    private static BufferedImage icecream_image_resizer;
    
    private JFrame pencere;
    private JPanel panel;
    private JLabel girdi_b;
    private JLabel genislik_b;
    private JLabel yukseklik_b;
    private JTextField girdi;
    private JTextField genislik;
    private JTextField yukseklik;
    private JButton boyutlandir;
    private JComboBox<String> tur;[/COLOR]
    private JButton yaz;
    private BufferedImage boyutlandirilmis;
    private String sonAd;
    private Font yazitipi;
    private JLabel yapimci;
    private JLabel iletisim;
   
    public static void main(String[] args) {
       
        try {
           
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        }
       
        catch (Exception e) {
           
            e.printStackTrace();
            hata(null, "Arayüz görünümü ayarlanamadı! Hata:\n" + e.getMessage());
            System.exit(-1);
        }
       
        try {
           
            Aldo_PC = Font.createFont(Font.TRUETYPE_FONT, Ana.class.getResourceAsStream("/Aldo PC.ttf"));
        }
       
        catch (Exception e) {
           
            e.printStackTrace();
            hata(null, "Yazıtipi yüklenemedi! Hata:\n" + e.getMessage());
            System.exit(-1);
        }
       
        try {
           
            icecream_image_resizer = ImageIO.read(Ana.class.getResource("/icecream-image-resizer.png"));
        }
       
        catch (Exception e) {
           
            e.printStackTrace();
            hata(null, "Pencere ikonu yüklenemedi! Hata:\n" + e.getMessage());
            System.exit(-1);
        }
       
        klasorleriKontrolEt();
       
        new Ana();
    }

    private Ana() {
       
        yazitipi = Aldo_PC.deriveFont(30.0f);
       
        girdi_b = new JLabel("Girdi >");
        girdi_b.setBounds(10, 10, 150, 60);
        girdi_b.setFont(yazitipi);
       
        genislik_b = new JLabel("Genislik >");
        genislik_b.setBounds(10, 80, 150, 60);
        genislik_b.setFont(yazitipi);
       
        yukseklik_b = new JLabel("Yükseklik >");
        yukseklik_b.setBounds(10, 150, 150, 60);
        yukseklik_b.setFont(yazitipi);
       
        girdi = new JTextField();
        girdi.setBounds(150, 10, 150, 60);
        girdi.setFont(yazitipi);
       
        genislik = new JTextField();
        genislik.setBounds(150, 80, 150, 60);
        genislik.setFont(yazitipi);
       
        yukseklik = new JTextField();
        yukseklik.setBounds(150, 150, 150, 60);
        yukseklik.setFont(yazitipi);
       
        boyutlandir = new JButton("BOYUTLANDIR");
        boyutlandir.setBounds(350, 10, 200, 60);
        boyutlandir.setFont(yazitipi);
        boyutlandir.addActionListener(new ActionListener() {
           
            @Override
            public void actionPerformed(ActionEvent e) {
               
                boyutlandir();
            }
        });
       
        tur = new JComboBox<>(new String[] {"     BMP", "     GIF", "     JPEG", "     PNG", "     WBMP"});
        tur.setBounds(350, 80, 200, 60);
        tur.setFont(yazitipi);
        tur.setSelectedIndex(3);
       
        yaz = new JButton("YAZ");
        yaz.setBounds(350, 150, 200, 60);
        yaz.setFont(yazitipi);
        yaz.addActionListener(new ActionListener() {
           
            @Override
            public void actionPerformed(ActionEvent e) {
               
                yaz();
            }
        });
       
        iletisim = new JLabel("İletişim: [email protected]");
        iletisim.setBounds(10, 220, 290, 60);
        iletisim.setFont(Aldo_PC.deriveFont(23.5f));
       
        yapimci = new JLabel("<html>Yapımcı:<font size = 3><br><br></font>Centeglassered [Cem GEÇGEL]</html>");
        yapimci.setBounds(350, 220, 200, 60);
        yapimci.setFont(Aldo_PC.deriveFont(17.0f));
       
        panel = new JPanel();
        panel.setLayout(null);
        panel.setPreferredSize(new Dimension(560, 290));
        panel.add(girdi_b);
        panel.add(genislik_b);
        panel.add(yukseklik_b);
        panel.add(girdi);
        panel.add(genislik);
        panel.add(yukseklik);
        panel.add(boyutlandir);
        panel.add(tur);
        panel.add(yaz);
        panel.add(iletisim);
        panel.add(yapimci);
       
        pencere = new JFrame("Resim Boyutlandırıcı");
        pencere.setContentPane(panel);
        pencere.setResizable(false);
        pencere.pack();
        pencere.setLocationRelativeTo(null);
        pencere.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pencere.setIconImage(icecream_image_resizer);
        pencere.setVisible(true);
    }
   
    private void boyutlandir() {
       
        System.out.println(turuAl());
       
        girdi.setText(girdi.getText().trim());
        genislik.setText(genislik.getText().trim());
        yukseklik.setText(yukseklik.getText().trim());
       
        BufferedImage r = Yardimci.resmiOku(girdi.getText(), turuAl(), pencere);
       
        if (r == null) return;
       
        int g = 0;
        int y = 0;
       
        try {
           
            g = Integer.parseInt(genislik.getText());
            y = Integer.parseInt(yukseklik.getText());
        }
       
        catch (Exception e) {
           
            hata(pencere, "Geçersiz boyutlar!\nGenişlik > " + genislik.getText() + "\nYükseklik > " + yukseklik.getText());
            return;
        }
       
        if (g <= 0 || y <= 0) {
           
            hata(pencere, "Geçersiz boyutlar!\nGenişlik > " + genislik.getText() + "\nYükseklik > " + yukseklik.getText());
            return;
        }
       
        boyutlandirilmis = Yardimci.resmiBoyutlandir(r, g, y);
        sonAd = girdi.getText();
        basari(pencere, "Resim boyutlandırıldı. Şimdi yazabilirsin!");
    }
   
    private String turuAl()
    {
        return ((String) tur.getSelectedItem()).substring(5);
    }
   
    private void yaz() {
       
        if (boyutlandirilmis == null) {
           
            hata(pencere, "Daha herhangi bir resim boyutlandırmadın!");
            return;
        }
       
        Yardimci.resmiYaz(boyutlandirilmis, sonAd, turuAl(), pencere);
        basari(pencere, sonAd + " adlı resim çıktı klasörüne yazıldı!");
    }
}

Yardimci.java
Kod:
package tr.centeglassered.resimboyutlandirici;

import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;

public class Yardimci {
   
    private static final File GIRDI = new File("girdi");
    private static final File CIKTI = new File("çıktı");

    public static BufferedImage resmiBoyutlandir(BufferedImage r, int g, int y) {

        BufferedImage sonuc = new BufferedImage(g, y, BufferedImage.TYPE_INT_RGB);
       
        Graphics2D g2d = (Graphics2D) sonuc.getGraphics();
        g2d.drawImage(r, 0, 0, g, y, null);
        g2d.dispose();
       
        return sonuc;
    }
   
    public static void resmiYaz(BufferedImage r, String ad, String tur, JFrame p) {
       
        try {
           
            CIKTI.mkdirs();
            ImageIO.write(r, tur, new File("çıktı/" + ad + "_bytlndrlmş." + tur.toLowerCase()));
        }
       
        catch (Exception e) {
           
            e.printStackTrace();
            hata(p, ad + " adlı resim yazılamadı! Hata:\n" + e.getMessage());
        }
    }
   
    public static BufferedImage resmiOku(String ad, String tur, JFrame p) {
       
        BufferedImage sonuc = null;
       
        try {
           
            GIRDI.mkdirs();
            sonuc = ImageIO.read(new File("girdi/" + ad + "." + tur.toLowerCase()));
        }
       
        catch (Exception e) {
           
            e.printStackTrace();
            hata(p, ad + " adlı resim okunamadı! Hata:\n" + e.getMessage());
        }
       
        return sonuc;
    }
   
    public static void klasorleriKontrolEt()
    {
        if (!GIRDI.exists()) GIRDI.mkdirs();
        if (!CIKTI.exists()) CIKTI.mkdirs();
    }
   
    public static void hata(JFrame pencere, String mesaj)
    {
        JOptionPane.showMessageDialog(pencere, mesaj, "HATA", JOptionPane.ERROR_MESSAGE);
    }
   
    public static void basari(JFrame pencere, String mesaj)
    {
        JOptionPane.showMessageDialog(pencere, mesaj, "BAŞARI", JOptionPane.INFORMATION_MESSAGE);
    }

    private Yardimci()
Kod:
Kod:
    {
       
    }
}


Mutlu yaşa, mutlu öl!
 

Kovalski

Hayalet Avcısı
En iyi cevaplar
0
çoğu fotoğraf editöründe zaten bu özellik var niye boyle bir şey yapma gereği duydunki
 
Üst