这是一篇入门级文章,高手请略过。 //内容来自安云网 在这篇文章中我们将学习如何用 Java 对图像进行剪裁并将剪裁出来的部分单独保存到文件中。 //内容来自安云网 我们将通过以下步骤来学习: //本文来自安云网
接下来我们开始编码部分。 //内容来自AnYun.ORG
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; 说明: //内容来自安云网
现在我们编写包含 main 方法的入口类 //内容来自AnYun.ORG 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(); } 说明: //内容来自AnYun.ORG
接下来是 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);
} //内容来自AnYun.ORG
说明: //内容来自安云网
下面我们定义用于处理鼠标事件的方法 //本文来自安云网
Listing 3: 鼠标事件处理函数 //内容来自AnYun.ORG
@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);
} //本文来自安云网
说明: //本文来自安云网
下面是 draggedscreen 方法的代码 //内容来自安云网 Listing 4: draggedScreen 方法 //内容来自AnYun.ORG 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."); }} 说明: //内容来自安云网
完整的代码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); } } 全文完! //内容来自安云网
英文原文:http://mrbool.com/how-to-crop-an-image-using-java/25272 //本文来自安云网
QQ群: WEB开发者官方总群(196171896) 验证消息:Admin10000
|