如何通过Java编辑jpg图像?
我已经加载了一个jpg图像,我想在其中画字母和圆圈,给定一个x,y坐标 我一直在努力找出这个班的画师 这个方法允许我以我想要的方式编辑jpg图像吗?组件c和图形g参数支持什么?我应该向它的主体添加什么来绘制圆圈或字母如何通过Java编辑jpg图像?,java,image,netbeans,Java,Image,Netbeans,我已经加载了一个jpg图像,我想在其中画字母和圆圈,给定一个x,y坐标 我一直在努力找出这个班的画师 这个方法允许我以我想要的方式编辑jpg图像吗?组件c和图形g参数支持什么?我应该向它的主体添加什么来绘制圆圈或字母 我正在开发Netbeans 6.5,我是否为这项任务内置了任何东西(而不是ImageIcon)?使用一个库来完成这项工作。您可以尝试的一种方法是。我使用了Java高级图像库(),但您也可以查看ImageJ()纯Java的方法是将图像作为一个对象使用。然后可以调用以获取Graphic
我正在开发Netbeans 6.5,我是否为这项任务内置了任何东西(而不是ImageIcon)?使用一个库来完成这项工作。您可以尝试的一种方法是。我使用了Java高级图像库(),但您也可以查看ImageJ()纯Java的方法是将图像作为一个对象使用。然后可以调用以获取
Graphics2D
对象;然后,您可以在图像上绘制任何您想要的内容
您可以使用嵌入
JLabel
中的ImageIcon
进行显示,如果您试图允许用户编辑图像,则可以在JLabel
中添加MouseListener
和/或MouseMotionListener
。I imagen每次在UI中绘制图像时,都可以使用此方法覆盖所需的元素(这会发生很多次,因为您不是在自己绘制图像数据),但可能适合您的目的(如果叠加随时间而变化,这将是有利的)
比如:
new ImageIcon("someUrl.png"){
public void paintIcon(Component c, Graphics g, int x, int y) {
super(c, g, x, y);
g.translate(x, y);
g.drawOval(0, 0, 10, 10);
...
g.translate(-x, -y);
}
};
话虽如此,如果您想修改图像数据,mmyers的答案要好得多。在Java中操作图像可以通过使用或上下文来实现 可以使用类来加载JPEG和PNG等图像。
ImageIO.read
方法接收要读入的文件并返回一个,该文件可用于通过其(或其超类)上下文操纵图像
Graphics2D
上下文可用于执行许多图像绘制和操作任务。对于信息和示例,of将是一个非常好的开始
以下是一个简化示例(未测试),它将打开一个JPEG文件,并绘制一些圆和线(忽略例外情况):
上面的代码将打开一个JPEG图像,并绘制一个椭圆和一条线。一旦执行这些操作来操作图像,buffereImage
可以像处理任何其他图像一样进行处理,因为它是图像
的子类
例如,通过使用buffereImage
创建,可以将图像嵌入或:
JLabel
和JButton
都有接受ImageIcon
的构造函数,因此这是向Swing组件添加图像的简单方法
new ImageIcon("someUrl.png"){
public void paintIcon(Component c, Graphics g, int x, int y) {
super(c, g, x, y);
g.translate(x, y);
g.drawOval(0, 0, 10, 10);
...
g.translate(-x, -y);
}
};
// Open a JPEG file, load into a BufferedImage.
BufferedImage img = ImageIO.read(new File("image.jpg"));
// Obtain the Graphics2D context associated with the BufferedImage.
Graphics2D g = img.createGraphics();
// Draw on the BufferedImage via the graphics context.
int x = 10;
int y = 10;
int width = 10;
int height = 10;
g.drawOval(x, y, width, height);
g.drawLine(0, 0, 50, 50);
// Clean up -- dispose the graphics context that was created.
g.dispose();
JLabel l = new JLabel("Label with image", new ImageIcon(img));
JButton b = new JButton("Button with image", new ImageIcon(img));