欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Java中怎么實現(xiàn)一個圖片剪裁功能

Java中怎么實現(xiàn)一個圖片剪裁功能,針對這個問題,這篇文章詳細介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

創(chuàng)新互聯(lián)建站是網(wǎng)站建設(shè)專家,致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營銷,專業(yè)領(lǐng)域包括做網(wǎng)站、網(wǎng)站制作、電商網(wǎng)站制作開發(fā)、成都微信小程序、微信營銷、系統(tǒng)平臺開發(fā),與其他網(wǎng)站設(shè)計及系統(tǒng)開發(fā)公司不同,我們的整合解決方案結(jié)合了恒基網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗和互聯(lián)網(wǎng)整合營銷的理念,并將策略和執(zhí)行緊密結(jié)合,且不斷評估并優(yōu)化我們的方案,為客戶提供全方位的互聯(lián)網(wǎng)品牌整合方案!

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 類作為拖拉的矩形區(qū)域以作剪裁

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

  4. 使用鼠標(biāo)偵聽器來獲取鼠標(biāo)的拖拉時間

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

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

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

  8. JFrame 用于顯示界面

現(xiàn)在我們編寫包含 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 以實現(xiàn) frame 的所有功能

  3. 實現(xiàn)了不同的鼠標(biāo)事件偵聽器以便知道用戶什么時候開始拖動鼠標(biāo)指針

  4. drag_status 變量用于保存鼠標(biāo)開始拖動時的坐標(biāo)

  5. 我們定義了 main 方法去調(diào)用一個 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 的類,使用要處理的圖像作為參數(shù)

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

下面我們定義用于處理鼠標(biāo)事件的方法

Listing 3:鼠標(biāo)事件處理函數(shù)

@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. 當(dāng)鼠標(biāo)按下時存儲當(dāng)前坐標(biāo)到 c1 和 c2

  2. 當(dāng)鼠標(biāo)按下并開始拖動時將拖動狀態(tài)變量 drag_status 設(shè)置為 true

  3. 到鼠標(biāo)按鍵松開時表示圖像剪裁區(qū)域已經(jīng)選擇完畢,調(diào)用 draggedscreen 方法

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

下面是 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 類來對剪裁的區(qū)域進行截圖并保持到另外一個文件 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);    }  }

關(guān)于Java中怎么實現(xiàn)一個圖片剪裁功能問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。

當(dāng)前標(biāo)題:Java中怎么實現(xiàn)一個圖片剪裁功能
本文URL:http://chinadenli.net/article48/ieihhp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、小程序開發(fā)、品牌網(wǎng)站設(shè)計、外貿(mào)網(wǎng)站建設(shè)、域名注冊搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司
91精品国产综合久久不卡| 九九热这里只有精品哦| 国产三级不卡在线观看视频| 日韩女优精品一区二区三区| 一区二区三区四区亚洲专区| 好吊一区二区三区在线看| 国产高清视频一区不卡| 国产精品欧美激情在线播放| 国产超薄黑色肉色丝袜| 色老汉在线视频免费亚欧| 久久国产精品亚州精品毛片| 中日韩免费一区二区三区| 欧美一区二区三区十区| 日本特黄特色大片免费观看 | 视频一区二区 国产精品| 超碰在线播放国产精品| 中文文精品字幕一区二区| 黄男女激情一区二区三区| 又色又爽又无遮挡的视频 | 制服丝袜美腿美女一区二区| 国产精品久久精品毛片| 欧美不卡午夜中文字幕| 五月婷日韩中文字幕四虎| 99久久精品午夜一区| 白白操白白在线免费观看| 一区二区三区亚洲国产| 中文字幕日韩欧美亚洲午夜| 国产级别精品一区二区视频| 亚洲男人的天堂久久a| 久久精品国产99精品最新| 国内精品伊人久久久av高清| 色一欲一性一乱—区二区三区| 亚洲一区二区久久观看| 夫妻激情视频一区二区三区| 欧美一区二区三区不卡高清视| 福利专区 久久精品午夜| 欧美不卡一区二区在线视频| 香蕉尹人视频在线精品| 国产精品亚洲综合色区韩国| 亚洲av日韩一区二区三区四区| 十八禁日本一区二区三区|