Ini adalah artikel tingkat pemula, para ahli harap lewati saja.
Pada artikel ini kita akan mempelajari cara memotong gambar di Java dan menyimpan bagian yang dipotong secara terpisah ke file.
Kita akan belajar melalui langkah-langkah berikut:
1. Input gambar dan tentukan jalur gambar yang akan diproses
2. Izinkan pengguna untuk menarik dan melepas bagian yang akan dipotong
3. Setelah memilih, gunakan kelas Robot untuk menentukan koordinat bagian yang terpotong.
4. Pangkas gambar yang dipilih dan simpan
Selanjutnya kita memulai bagian coding.
Listing1: kelas yang diperkenalkan
Copy kode kodenya sebagai berikut:
impor java.awt.Grafik;
import java.awt.Rectangle;
impor java.awt.Robot;
impor java.awt.event.MouseEvent;
impor java.awt.event.MouseListener;
impor java.awt.event.MouseMotionListener;
impor java.awt.image.BufferedImage;
impor java.io.File;
impor javax.imageio.ImageIO;
impor javax.swing.JFrame;
menjelaskan:
1. Kelas Grafik berisi metode menggambar persegi panjang
2. Kita menggunakan kelas Rectangle sebagai area persegi panjang yang diseret untuk dipotong
3. Kelas robot digunakan untuk menangkap tangkapan layar
4. Gunakan pendengar mouse untuk mengetahui waktu drag mouse
5. Kelas Robot menggunakan BufferedImage untuk pemrosesan gambar
6. Kelas file digunakan untuk membuka file gambar
7. Kelas ImageIO digunakan untuk menulis gambar ke file gambar png atau jpg
8.JFrame digunakan untuk menampilkan antarmuka
Sekarang kita menulis kelas entri yang berisi metode utama
Listing2: Kelas masuk
Copy kode kodenya sebagai berikut:
kelas publik CropImage memperluas implementasi JFrame MouseListener, MouseMotionListener
{
int drag_status=0,c1,c2,c3,c4;
public static void main(String args[])
{
CropImage baru().start();
}
menjelaskan:
1.Menulis kelas bernama CropImage
2. Kelas ini memperluas JFrame untuk mengimplementasikan semua fungsi frame
3. Menerapkan pendengar peristiwa mouse yang berbeda untuk mengetahui kapan pengguna mulai menyeret penunjuk tetikus
4. Variabel drag_status digunakan untuk menyimpan koordinat ketika mouse mulai menyeret
5. Kami mendefinisikan metode utama untuk memanggil metode awal, yang akan didefinisikan di bawah
Berikutnya adalah metode awal
Daftar 2
Copy kode kodenya sebagai berikut:
kekosongan publik mulai()
{
ImagePanel im=new ImagePanel("F://Wallpaper//wallpapers//1.jpg");
tambahkan(saya);
setUkuran(400,400);
setVisible(benar);
addMouseListener(ini);
addMouseMotionListener( ini );
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
menjelaskan:
1. Kita mendefinisikan kelas bernama ImagePanel, menggunakan gambar yang akan diproses sebagai parameter
2. Tempatkan ImagePanel untuk menampilkan gambar di JFrame dan mulai mendengarkan aktivitas mouse.
Selanjutnya kita mendefinisikan metode untuk menangani kejadian mouse
Listing 3: Pengendali acara mouse
Copy kode kodenya sebagai berikut:
@Mengesampingkan
public void mouseClicked(MouseEvent arg0) {
}
@Mengesampingkan
public void mouseEntered(MouseEvent arg0) {
}
@Mengesampingkan
public void mouseExited(MouseEvent arg0) {
}
@Mengesampingkan
public void mousePressed(MouseEvent arg0) {
mengecat ulang();
c1=arg0.getX();
c2=arg0.getY();
}
@Mengesampingkan
public void mouseReleased(MouseEvent arg0) {
mengecat ulang();
jika(seret_status==1)
{
c3=arg0.getX();
c4=arg0.getY();
mencoba
{
diseretLayar();
}
menangkap (Pengecualian e)
{
e.printStackTrace();
}
}
}
@Mengesampingkan
public void mouseDragged(MouseEvent arg0) {
mengecat ulang();
drag_status=1;
c3=arg0.getX();
c4=arg0.getY();
}
@Mengesampingkan
public void mouseMoved(MouseEvent arg0) {
}
cat void publik (Gambar g)
{
super.cat(g);
int w = c1 - c3;
int h = c2 - c4;
w = w * -1;
jam = jam * -1;
jika(w<0)
w = w * -1;
g.drawRect(c1, c2, w, h);
}
menjelaskan:
1. Saat mouse ditekan, simpan koordinat saat ini ke dalam c1 dan c2
2. Atur variabel status drag drag_status ke true ketika mouse ditekan dan drag dimulai.
3. Ketika tombol mouse dilepaskan, berarti area pemotongan gambar telah dipilih, dan metode dragscreen dipanggil.
4. Metode cat digunakan untuk menampilkan persegi panjang saat menyeret, dan menggambar persegi panjang melalui koordinat saat ini dan koordinat yang direkam sebelumnya.
Di bawah ini adalah kode untuk metode dragscreen
Daftar 4: metode dragScreen
Copy kode kodenya sebagai berikut:
public void dragScreen()melemparkan Pengecualian
{
int w = c1 - c3;
int h = c2 - c4;
w = w * -1;
jam = jam * -1;
Robot robot = Robot baru();
BufferedImage img = robot.createScreenCapture(Persegi Panjang baru(c1, c2,w,h));
File save_path=File baru("screen1.jpg");
ImageIO.write(img, "JPG", simpan_path);
System.out.println("Gambar berhasil disimpan.");
}}
menjelaskan:
1. Hitung terlebih dahulu tinggi dan lebar gambar
2. Gunakan kelas Robot untuk mengambil tangkapan layar dari area yang dipotong dan menyimpannya ke file lain screen1.jpg
kode lengkap
Daftar 5: ImagePanel.java
Copy kode kodenya sebagai berikut:
import java.awt.Dimensi;
impor java.awt.Grafik;
impor java.awt.Gambar;
impor javax.swing.ImageIcon;
impor javax.swing.JPanel;
kelas ImagePanel memperluas JPanel {
gambar pribadi img;
Panel Gambar publik(String img) {
ini(Ikon Gambar baru(img).getImage());
}
ImagePanel publik(Gambar img) {
ini.img = img;
Ukuran dimensi = Dimensi baru(img.getWidth(null), img.getHeight(null));
// Ukuran dimensi = Dimensi baru(10,10);
setPreferredSize(ukuran);
setUkuranMinimum(ukuran);
setUkuran Maksimum(ukuran);
setUkuran(ukuran);
setLayout(null);
}
public void paintComponent(Grafik g) {
g.drawImage(img, 0, 0, nol);
}
}
Daftar 6:CropImage.java
Copy kode kodenya sebagai berikut:
impor java.awt.Grafik;
import java.awt.Rectangle;
impor java.awt.Robot;
impor java.awt.event.MouseEvent;
impor java.awt.event.MouseListener;
impor java.awt.event.MouseMotionListener;
impor java.awt.image.BufferedImage;
impor java.io.File;
impor javax.imageio.ImageIO;
impor javax.swing.JFrame;
kelas publik CropImage memperluas implementasi JFrame MouseListener, MouseMotionListener
{
int drag_status=0,c1,c2,c3,c4;
public static void main(String args[])
{
CropImage baru().start();
}
kekosongan publik mulai()
{
ImagePanel im=new ImagePanel("F://Wallpaper//wallpapers//1.jpg");
tambahkan(saya);
setUkuran(400,400);
setVisible(benar);
addMouseListener(ini);
addMouseMotionListener( ini );
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public void dragScreen()melemparkan Pengecualian
{
int w = c1 - c3;
int h = c2 - c4;
w = w * -1;
jam = jam * -1;
Robot robot = Robot baru();
BufferedImage img = robot.createScreenCapture(Persegi Panjang baru(c1, c2,w,h));
File save_path=File baru("screen1.jpg");
ImageIO.write(img, "JPG", simpan_path);
System.out.println("Gambar berhasil disimpan.");
}
@Mengesampingkan
public void mouseClicked(MouseEvent arg0) {
}
@Mengesampingkan
public void mouseEntered(MouseEvent arg0) {
}
@Mengesampingkan
public void mouseExited(MouseEvent arg0) {
}
@Mengesampingkan
public void mousePressed(MouseEvent arg0) {
mengecat ulang();
c1=arg0.getX();
c2=arg0.getY();
}
@Mengesampingkan
public void mouseReleased(MouseEvent arg0) {
mengecat ulang();
jika(seret_status==1)
{
c3=arg0.getX();
c4=arg0.getY();
mencoba
{
diseretLayar();
}
menangkap (Pengecualian e)
{
e.printStackTrace();
}
}
}
@Mengesampingkan
public void mouseDragged(MouseEvent arg0) {
mengecat ulang();
drag_status=1;
c3=arg0.getX();
c4=arg0.getY();
}
@Mengesampingkan
public void mouseMoved(MouseEvent arg0) {
}
cat void publik (Gambar g)
{
super.cat(g);
int w = c1 - c3;
int h = c2 - c4;
w = w * -1;
jam = jam * -1;
jika(w<0)
w = w * -1;
g.drawRect(c1, c2, w, h);
}
}