91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java怎么實現一個圖片剪裁功能

發布時間:2023-04-20 10:00:43 來源:億速云 閱讀:117 作者:iii 欄目:編程語言

這篇文章主要介紹了Java怎么實現一個圖片剪裁功能的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Java怎么實現一個圖片剪裁功能文章都會有所收獲,下面我們一起來看看吧。

Listing1: 引入的類

import java.awt.Graphics;  import java.awt.Rectangle;  import java.awt.Robot;  import java.awt.event.MouseEvent;  import java.awt.event.MouseListener;  import java.awt.event.MouseMotionListener;  import java.awt.image.BufferedImage;  import java.io.File;  import javax.imageio.ImageIO;  import javax.swing.JFrame;

說明:

  1. Graphics 類包含繪制矩形的方法

  2. 我們使用 Rectangle 類作為拖拉的矩形區域以作剪裁

  3. Robot 類用于捕獲屏幕截圖

  4. 使用鼠標偵聽器來獲取鼠標的拖拉時間

  5. Robot 類使用 BufferedImage 來做圖像處理

  6. File 類用于打開圖像文件

  7. ImageIO 類用于將圖像寫到 png 或者 jpg 圖像文件中

  8. JFrame 用于顯示界面

現在我們編寫包含 main 方法的入口類

Listing2: 入口類

public class CropImage extends JFrame implements MouseListener, MouseMotionListener  {      int drag_status=0,c1,c2,c3,c4;  public static void main(String args[])  {      new CropImage().start();  }

說明:

  1. 編寫了一個名為 CropImage 的類

  2. 該類擴展了 JFrame 以實現 frame 的所有功能

  3. 實現了不同的鼠標事件偵聽器以便知道用戶什么時候開始拖動鼠標指針

  4. drag_status 變量用于保存鼠標開始拖動時的坐標

  5. 我們定義了 main 方法去調用一個 start 方法,這個方法將在下面定義

接下來是 start 方法

Listing 2

public void start()  {      ImagePanel im=new ImagePanel("F:\\Wallpaper\\wallpapers\\1.jpg");      add(im);      setSize(400,400);      setVisible(true);      addMouseListener(this);      addMouseMotionListener( this );      setDefaultCloseOperation(EXIT_ON_CLOSE);  }

說明:

  1. 我們定義一個名為 ImagePanel 的類,使用要處理的圖像作為參數

  2. 在 JFrame 中放置這個要顯示圖片的 ImagePanel,并開始偵聽鼠標事件

下面我們定義用于處理鼠標事件的方法

Listing 3: 鼠標事件處理函數

@Override public void mouseClicked(MouseEvent arg0) {  }     @Override public void mouseEntered(MouseEvent arg0) {  }     @Override public void mouseExited(MouseEvent arg0) {  }     @Override public void mousePressed(MouseEvent arg0) {      repaint();      c1=arg0.getX();      c2=arg0.getY();  }     @Override public void mouseReleased(MouseEvent arg0) {      repaint();      if(drag_status==1)      {      c3=arg0.getX();      c4=arg0.getY();      try     {      draggedScreen();      }      catch(Exception e)      {          e.printStackTrace();      }      }  }     @Override public void mouseDragged(MouseEvent arg0) {      repaint();      drag_status=1;      c3=arg0.getX();      c4=arg0.getY();  }   @Override public void mouseMoved(MouseEvent arg0) {         }     public void paint(Graphics g)  {      super.paint(g);      int w = c1 - c3;      int h = c2 - c4;      w = w * -1;      h = h * -1;      if(w<0)          w = w * -1;      g.drawRect(c1, c2, w, h);         }

說明:

  1. 當鼠標按下時存儲當前坐標到 c1 和 c2

  2. 當鼠標按下并開始拖動時將拖動狀態變量 drag_status 設置為 true

  3. 到鼠標按鍵松開時表示圖像剪裁區域已經選擇完畢,調用 draggedscreen 方法

  4. paint 方法用于拖動時候的矩形顯示,通過當前坐標和初始記錄的坐標來繪制矩形

下面是 draggedscreen 方法的代碼

Listing 4: draggedScreen 方法

public void draggedScreen()throws Exception  {          int w = c1 - c3;          int h = c2 - c4;          w = w * -1;          h = h * -1;          Robot robot = new Robot();          BufferedImage img = robot.createScreenCapture(new Rectangle(c1, c2,w,h));          File save_path=new File("screen1.jpg");          ImageIO.write(img, "JPG", save_path);      System.out.println("Cropped image saved successfully.");  }}

說明:

  1. 首先計算圖像的高度和寬度

  2. 使用 Robot 類來對剪裁的區域進行截圖并保持到另外一個文件 screen1.jpg

完整的代碼

Listing 5: ImagePanel.java

import java.awt.Dimension;  import java.awt.Graphics;  import java.awt.Image;     import javax.swing.ImageIcon;  import javax.swing.JPanel;         class ImagePanel extends JPanel {               private Image img;               public ImagePanel(String img) {              this(new ImageIcon(img).getImage());            }               public ImagePanel(Image img) {              this.img = img;              Dimension size = new Dimension(img.getWidth(null), img.getHeight(null));             // Dimension size = new Dimension(10,10);              setPreferredSize(size);              setMinimumSize(size);              setMaximumSize(size);              setSize(size);              setLayout(null);            }               public void paintComponent(Graphics g) {              g.drawImage(img, 0, 0, null);            }             }

Listing 6:CropImage.java

import java.awt.Graphics;  import java.awt.Rectangle;  import java.awt.Robot;  import java.awt.event.MouseEvent;  import java.awt.event.MouseListener;  import java.awt.event.MouseMotionListener;  import java.awt.image.BufferedImage;  import java.io.File;  import javax.imageio.ImageIO;  import javax.swing.JFrame;     public class CropImage extends JFrame implements MouseListener, MouseMotionListener  {      int drag_status=0,c1,c2,c3,c4;  public static void main(String args[])  {      new CropImage().start();  }  public void start()  {      ImagePanel im=new ImagePanel("F:\\Wallpaper\\wallpapers\\1.jpg");      add(im);      setSize(400,400);      setVisible(true);      addMouseListener(this);      addMouseMotionListener( this );      setDefaultCloseOperation(EXIT_ON_CLOSE);  }  public void draggedScreen()throws Exception  {          int w = c1 - c3;          int h = c2 - c4;          w = w * -1;          h = h * -1;          Robot robot = new Robot();          BufferedImage img = robot.createScreenCapture(new Rectangle(c1, c2,w,h));          File save_path=new File("screen1.jpg");          ImageIO.write(img, "JPG", save_path);      System.out.println("Cropped image saved successfully.");  }  @Override public void mouseClicked(MouseEvent arg0) {      }     @Override public void mouseEntered(MouseEvent arg0) {      }     @Override public void mouseExited(MouseEvent arg0) {       }     @Override public void mousePressed(MouseEvent arg0) {      repaint();      c1=arg0.getX();      c2=arg0.getY();  }     @Override public void mouseReleased(MouseEvent arg0) {      repaint();      if(drag_status==1)      {      c3=arg0.getX();      c4=arg0.getY();      try     {      draggedScreen();      }      catch(Exception e)      {          e.printStackTrace();      }      }  }     @Override public void mouseDragged(MouseEvent arg0) {      repaint();      drag_status=1;      c3=arg0.getX();      c4=arg0.getY();  }     @Override public void mouseMoved(MouseEvent arg0) {         }     public void paint(Graphics g)  {      super.paint(g);      int w = c1 - c3;      int h = c2 - c4;      w = w * -1;      h = h * -1;      if(w<0)          w = w * -1;      g.drawRect(c1, c2, w, h);    }  }

關于“Java怎么實現一個圖片剪裁功能”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“Java怎么實現一個圖片剪裁功能”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宝山区| 青田县| 上高县| 汝阳县| 泊头市| 福鼎市| 承德市| 洛川县| 崇阳县| 苏尼特右旗| 饶阳县| 高陵县| 开化县| 东安县| 泰来县| 彭山县| 镇坪县| 宁海县| 策勒县| 抚松县| 神木县| 金塔县| 玉门市| 阜新市| 黑山县| 虹口区| 丹东市| 尚义县| 甘谷县| 佛坪县| 偃师市| 崇仁县| 广德县| 南康市| 育儿| 彭山县| 福清市| 正定县| 土默特左旗| 广昌县| 柞水县|