📄 OranliSeciliAlanKeydet.java .java dosyası

⬇️ İndir
import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Point; import java.awt.Rectangle; import java.awt.event.MouseEvent; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import javax.imageio.ImageIO; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.SwingUtilities; import javax.swing.event.MouseInputAdapter; public class OranliSeciliAlanKeydet { private BufferedImage resim; private Rectangle seciliAlan; private Point seciliAlanBaslangic; public OranliSeciliAlanKeydet() throws IOException { // https://littlevisuals.co/ Bu site Nic Jackson anisina ücretsiz fotograf sunmaktadir. resim = ImageIO.read(new File("src/images/vana.jpeg")); seciliAlan = new Rectangle(0, 0, 160, 90); // 16:9 oranli ilk alan seciliAlanBaslangic = new Point(0, 0); JPanel panel = new JPanel() { public void paintComponent(Graphics grafik) { grafik.drawImage(resim, 0, 0, null); grafik.drawRect(seciliAlan.x, seciliAlan.y, seciliAlan.width, seciliAlan.height); } public Dimension getPreferredSize() { // Panelin ölçüsü resim ölçüsüne ayarlanir... return new Dimension(resim.getWidth(), resim.getHeight()); } }; panel.addMouseListener(new MouseInputAdapter() { public void mousePressed(MouseEvent event) { seciliAlanBaslangic = event.getPoint(); seciliAlan.setLocation(seciliAlanBaslangic); } public void mouseReleased(MouseEvent event) { kaydet(); kaydetOran(); } }); panel.addMouseMotionListener(new MouseInputAdapter() { @Override public void mouseDragged(MouseEvent e) { // Oran 1024×576 double oran = 1024.0 / 576.0; int x = seciliAlanBaslangic.x; int y = seciliAlanBaslangic.y; int width = e.getX() - seciliAlanBaslangic.x; int height = e.getY() - seciliAlanBaslangic.y; // Yüksekliğe göre genişliği ayarla if (Math.abs(height) * oran <= Math.abs(width)) { width = (int) (Math.signum(width) * Math.abs(height) * oran); } // Genişliğe göre yüksekliği ayarla else { height = (int) (Math.signum(height) * Math.abs(width) / oran); } seciliAlan.setBounds(x, y, width, height); panel.repaint(); } }); JFrame frame = new JFrame("Oranli Seçili Resim Alanini Kaydet | Java Blackboard [110]"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setResizable(false); frame.getContentPane().add(panel); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } // Orana gore seçilen alani ölçüye göre kaydeder ---> ORAN 16:9 ----> ÖLÇÜ 1024×576 private void kaydetOran() { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-d HH-mm-ss"); Date date = new Date(); int genislik = 1024; int yukseklik = 576; BufferedImage secilenAlan = resim.getSubimage(seciliAlan.x, seciliAlan.y, seciliAlan.width, seciliAlan.height); BufferedImage scaledImage = new BufferedImage(genislik, yukseklik, secilenAlan.getType()); Graphics2D graphics = scaledImage.createGraphics(); graphics.drawImage(secilenAlan, 0, 0, genislik, yukseklik, null); graphics.dispose(); File kaydedilecekDosya = new File("src/images/secilenAlan-"+dateFormat.format(date)+".jpg"); try { ImageIO.write(scaledImage, "jpg", kaydedilecekDosya); // System.out.println("Dosya kaydedildi: " + kaydedilecekDosya.getAbsolutePath()); } catch (IOException e) { e.printStackTrace(); } } // Mouse ile seçilen alani kaydeder... // Mouse ile belirlenen Orijinal olçüde.... private void kaydet() { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-d HH-mm-ss"); Date date = new Date(); BufferedImage secilenAlan = resim.getSubimage(seciliAlan.x, seciliAlan.y, seciliAlan.width, seciliAlan.height); Graphics2D graphics = secilenAlan.createGraphics(); graphics.drawImage(secilenAlan, 0, 0, seciliAlan.width, seciliAlan.height, null); graphics.dispose(); File kaydedilecekDosya = new File("src/images/secilenAlan_"+dateFormat.format(date)+".jpg"); try { ImageIO.write(secilenAlan, "jpg", kaydedilecekDosya); // System.out.println("Dosya kaydedildi: " + kaydedilecekDosya.getAbsolutePath()); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { SwingUtilities.invokeLater(() -> { try { new OranliSeciliAlanKeydet(); } catch (IOException e) { e.printStackTrace(); } }); } }