使用 Java 裁剪图像
Posted
技术标签:
【中文标题】使用 Java 裁剪图像【英文标题】:Cropping an image using Java 【发布时间】:2013-04-20 04:06:08 【问题描述】:如何在 Java 中裁剪图像?我目前有这个类用于图像处理。
main方法与run方法:
public static void main(String[] args)
GameProject gp = new GameProject();
gp.run();
public void run()
s = new Screen();
try
DisplayMode dm = s.findFirstCompatibleMode(modes);
s.setFullscreen(dm);
Fonts f = new Fonts(); //Checks if certain fonts exsist, if not install them.
Images i = new Images();
try
i.draw("H:\\Dropbox\\Dropbox\\GameProject\\src\\Resources\\brock.png", 200, 200);
Thread.sleep(50000);
catch (Exception e)
finally
s.restoreScreen();
图片类:
package Handlers;
import javax.swing.ImageIcon;
import java.awt.*;
/**
*
* @author Steven
*/
public class Images
/**
* @param args the command line arguments
*/
private Screen s;
public void draw(String name, int x, int y) //Draws the image
s = new Screen();
Graphics2D g = s.getGraphics();
draws(g, name, x, y, getWidth(name), getHeight(name));
public void drawA(String name, int x, int y) //Draws the image, allows for a more advanced image manipulation
s = new Screen();
Graphics2D g = s.getGraphics();
draws(g, name, x, y, getWidth(name), getHeight(name));
public void draws(Graphics g, String name, int x, int y, int w, int h) //Draws and updates the screen
s = new Screen();
g.drawImage(new ImageIcon(name).getImage(), x, y, w, h, null);
s.update();
public int getWidth(String name) //Gets the image width
return new ImageIcon(name).getIconWidth();
public int getHeight(String name) //Gets the images height
return new ImageIcon(name).getIconHeight();
任何帮助将不胜感激。
【问题讨论】:
如需尽快获得更好的帮助,请发布SSCCE。要成为 SSCCE,它需要一个main(String[])
来生成代码中的图像或热链接。
我猜你会使用Graphics2D
的.getSubimage()
。我在我的 java 课上有一堂课来制作一个“图片加扰器”拼图,我在那里使用它。不过不记得这个方法是来自Graphics2D
还是来自BufferedImage
。
我认为它在 BufferedImage 中。
我很想帮助解决这个问题,但你似乎忽略了我..
我是 *** 的新手,我假设你们两个是同一个人,抱歉:/
【参考方案1】:
您可以使用CropImageFilter
裁剪图像。另外,看看 java.awt.image 包,它确实有很多图像处理例程。
【讨论】:
谢谢,我去看看。 java.awt.image 很有帮助,我设法在里面找到了一个方法,它给了我想要的效果。【参考方案2】:我在自己的项目中使用过这个:-
public boolean CropImage(int cropHeight,int cropWidth,int windowLeft,int windowTop,File srcFile,String destDirectory,String destFilename,int commonPadding,String fileFormat,HttpServletRequest request)throws IOException
boolean isOkResolution=false;
try
String dirPath=request.getRealPath("")+"/"+destDirectory;
File f=new File(dirPath);
if(!f.isDirectory())
f.mkdir();
String destpath=dirPath+"/"+destFilename;
File outputFile=new File(destpath);
FileInputStream fis=new FileInputStream(srcFile);
BufferedImage bimage=ImageIO.read(fis);
System.out.println("Image Origilnal Height=="+bimage.getHeight());
BufferedImage oneimg=new BufferedImage(cropHeight,cropWidth,bimage.getType());
Graphics2D gr2d=oneimg.createGraphics();
isOkResolution=gr2d.drawImage(bimage,0,0,cropWidth,cropHeight,windowLeft-commonPadding,windowTop-commonPadding,(windowLeft+cropWidth)-commonPadding,(windowTop+cropHeight)-commonPadding,null);
gr2d.dispose();
ImageIO.write(oneimg,fileFormat,outputFile);
catch (FileNotFoundException fe)
System.out.println("No File Found =="+fe);
catch(Exception ex)
System.out.println("Error in Croping File="+ex);
ex.printStackTrace();
return isOkResolution;
此方法将帮助您裁剪图像。它适用于我的项目。希望对您有所帮助。
【讨论】:
我会保留参考资料^,但我并不是说用较小的版本替换图像。我正在尝试开发一款游戏,我想学习如何将图像的一半用于一件事,然后当某个事件发生时,它将转到另一半(例如步行 npcs)。 阅读精简的代码通常更舒服,只有必要的细节。以上是关于使用 Java 裁剪图像的主要内容,如果未能解决你的问题,请参考以下文章