📄 SeciliAlanKeydet.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 SeciliAlanKeydet {
private BufferedImage resim;
private Rectangle seciliAlan;
private Point seciliAlanBaslangic;
public SeciliAlanKeydet() throws IOException {
resim = ImageIO.read(new File("src/images/sehir.jpeg"));
seciliAlan = new Rectangle(0, 0, 400, 225);
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();
kaydetOlcu();
}
});
panel.addMouseMotionListener(new MouseInputAdapter() {
public void mouseDragged(MouseEvent e) {
int x = Math.min(e.getX(), seciliAlanBaslangic.x);
int y = Math.min(e.getY(), seciliAlanBaslangic.y);
int width = Math.abs(e.getX() - seciliAlanBaslangic.x);
int height = Math.abs(e.getY() - seciliAlanBaslangic.y);
seciliAlan.setBounds(x, y, width, height);
panel.repaint();
}
});
JFrame frame = new JFrame("Seçili Resim Alanini Kaydet | Java Blackboard [109]");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.getContentPane().add(panel);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
// verilen olcude kaydeder ---> 730 x 650 px
// Ölçü ---> 730 x 650 px
private void kaydetOlcu() {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-d HH-mm-ss");
Date date = new Date();
int genislik = 730;
int yukseklik = 650;
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 SeciliAlanKeydet();
} catch (IOException e) {
e.printStackTrace();
}
});
}
}