在这篇文章中我们将学习如何用Java对图像进行剪裁并将剪裁出来的部分单独保存到文件中。下面学步园小编来讲解下如何在Java中进行图片剪裁?
如何在Java中进行图片剪裁
我们将通过以下步骤来学习:
输入图像,指定要处理的图像路径
允许用户拖放要剪裁的部分
选择后使用Robot类来确定剪裁部分的坐标
剪裁所选图像并保持
接下来我们开始编码部分。
Listing1:引入的类
importjava.awt.Graphics;
importjava.awt.Rectangle;
importjava.awt.Robot;
importjava.awt.event.MouseEvent;
importjava.awt.event.MouseListener;
importjava.awt.event.MouseMotionListener;
importjava.awt.image.BufferedImage;
importjava.io.File;
importjavax.imageio.ImageIO;
importjavax.swing.JFrame;
说明:
Graphics类包含绘制矩形的方法
我们使用Rectangle类作为拖拉的矩形区域以作剪裁
Robot类用于捕获屏幕截图
使用鼠标侦听器来获取鼠标的拖拉时间
Robot类使用BufferedImage来做图像处理
File类用于打开图像文件
ImageIO类用于将图像写到png或者jpg图像文件中
JFrame用于显示界面
现在我们编写包含main方法的入口类
Listing2:入口类
publicclassCropImageextendsJFrameimplementsMouseListener,MouseMotionListener
{
intdrag_status=0,c1,c2,c3,c4;
publicstaticvoidmain(Stringargs[])
{
newCropImage()。start();
}
说明:
编写了一个名为CropImage的类
该类扩展了JFrame以实现frame的所有功能
实现了不同的鼠标事件侦听器以便知道用户什么时候开始拖动鼠标指针
drag_status变量用于保存鼠标开始拖动时的坐标
我们定义了main方法去调用一个start方法,这个方法将在下面定义
接下来是start方法
Listing2
publicvoidstart()
{
ImagePanelim=newImagePanel(“F:\\Wallpaper\\wallpapers\\1.jpg”);
add(im);
setSize(400,400);
setVisible(true);
addMouseListener(this);
addMouseMotionListener(this);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
如何在Java中进行图片剪裁
说明:
我们定义一个名为ImagePanel的类,使用要处理的图像作为参数
在JFrame中放置这个要显示图片的ImagePanel,并开始侦听鼠标事件
下面我们定义用于处理鼠标事件的方法
Listing3:鼠标事件处理函数
@OverridepublicvoidmouseClicked(MouseEventarg0)
{}
@OverridepublicvoidmouseEntered(MouseEventarg0)
{}
@OverridepublicvoidmouseExited(MouseEventarg0)
{}
@OverridepublicvoidmousePressed(MouseEventarg0)
{
repaint();
c1=arg0.getX();
c2=arg0.getY();
}
@OverridepublicvoidmouseReleased(MouseEventarg0){
repaint();
if(drag_status==1)
{
c3=arg0.getX();
c4=arg0.getY();
try
{
draggedScreen();
}
catch(Exceptione)
{
e.printStackTrace();
}
}
}
@OverridepublicvoidmouseDragged(MouseEventarg0)
{
repaint();
drag_status=1;
c3=arg0.getX();
c4=arg0.getY();
}
@OverridepublicvoidmouseMoved(MouseEventarg0)
{
}
publicvoidpaint(Graphicsg)
{
super.paint(g);
intw=c1-c3;
inth=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方法用于拖动时候的矩形显示,通过当前坐标和初始记录的坐标来绘制矩形 以上就是关于“如何在Java中进行图片剪裁”的内容,希望对大家有用。更多资讯请关注学步园。学步园,您学习IT技术的优质平台!