日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java图片裁剪并保存_java裁剪图片并保存的示例分享

發布時間:2023/12/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java图片裁剪并保存_java裁剪图片并保存的示例分享 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們將通過以下步驟來學習:

輸入圖像,指定要處理的圖像路徑

允許用戶拖放要剪裁的部分

選擇后使用 Robot 類來確定剪裁部分的坐標

剪裁所選圖像并保持

接下來我們開始編碼部分。

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;

說明:

Graphics 類包含繪制矩形的方法

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

Robot 類用于捕獲屏幕截圖

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

Robot 類使用 BufferedImage 來做圖像處理

File 類用于打開圖像文件

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

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();

}

說明:

編寫了一個名為 CropImage 的類

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

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

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

我們定義了 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);

}

說明:

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

在 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);

}

說明:

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

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

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

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.");

}}

說明:

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

使用 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裁剪图片并保存的示例分享的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美日韩国产一区二区三区在线观看 | 欧美激情综合网 | 一级片黄色 | 亚洲AV无码精品久久一区二区 | 密臀av| 精品国产69 | 日韩美女视频一区 | 日韩精品h | 中文字幕在线观看视频网站 | 免费激情av| 欧美卡一卡二卡三 | 日韩午夜剧场 | 日本亚洲天堂 | 国产美女被遭强高潮免费网站 | 午夜视频污 | 女女同性被吸乳羞羞 | 肉丝美足丝袜一区二区三区四 | 韩国毛片一区二区三区 | 麻豆av在线 | 亚洲欧洲免费 | 超碰公开免费 | 久久夜色精品国产噜噜亚洲av | 99精品国产成人一区二区 | 国产乱人视频 | 欧美偷拍亚洲 | 96久久久 | 久久男人 | 欧美日韩成人一区二区三区 | 一个人看的www视频在线观看 | 日韩激情视频网站 | 911亚洲精选| 精品一区二区三区四区 | 国产精品日韩欧美一区二区三区 | 国产成人三级一区二区在线观看一 | 男女一级黄色 | 中文婷婷 | 性一交一乱一色一免费无遮挡 | 亚洲深夜视频 | www.黄在线观看 | 午夜精品久久久久久久99 | jizz成熟丰满日本少妇 | 色666| 日韩欧美二区 | 精品国产成人亚洲午夜福利 | 操操操操操操操操操操 | 国产夫妇交换聚会群4p | 亚洲欧美一二三区 | 亚洲综合视频在线观看 | 国产成人一级 | 91亚瑟视频 | 日本aaa视频 | 亚洲色图综合 | 日韩怡春院 | 国产女人18毛片水18精品 | 99riav在线| 轻点好疼好大好爽视频 | 国产视频在线观看网站 | 久久人人爽人人爽人人 | 婷婷午夜激情 | 色欧美片视频在线观看 | 国产女人水真多18毛片18精品 | 五月开心激情网 | 在线观看 一区 | 中文字幕无码精品亚洲35 | 亚欧激情| 日韩高清影视在线观看 | 国产伦精品一区二区三区高清版 | 在线观看 中文字幕 | 东北毛片| 114国产精品久久免费观看 | 亚洲综合无码一区二区 | xxxx日本少妇 | 亚洲一区二区三区在线播放 | 一区二区国产精品 | 久婷婷| 在线视频一区二区 | 亚洲精品乱码久久久久久蜜桃91 | 亚洲一二三四在线 | 免费看的av | 久久久久久久久久电影 | 国产 日韩 欧美 综合 | 波多野结衣网址 | 九九久久国产视频 | 国产精品亚洲一区二区三区 | 性久久久久久久久久 | 亚洲啪av永久无码精品放毛片 | 亚洲老妇色熟女老太 | 欧美亚韩一区二区三区 | av尤物在线 | 国产美女作爱视频 | 欧美在线观看不卡 | 亚洲av综合一区二区 | 久久精品香蕉 | 欧美黑人一区二区三区 | 国产毛片毛片 | 亚洲男人的天堂网 | 国产精品一区二区三区久久久 | 视频免费1区二区三区 | 一区二区久久 |