我用java处理一个jpg图片,通过像素值在图片上画圆,画线等操作。总是不成功,代码如下
String filename= "D:\\map.jpg";
File file = new File("D:\\maptemp.jpg");
FileOutputStream out = new FileOutputStream(file);
//构造一个缓冲的图像。
Image image = new ImageIcon(filename).getImage();
//创建一个BufferedImage, 然后把导入的图片先画到这个BufferedImage.
BufferedImage bufImage = new BufferedImage(image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_RGB);
Graphics imageGraphics = bufImage.getGraphics();
Point center = new Point(10,10);
Point start =new Point(0,0);
Point end = new Point(100,100);
imageGraphics.drawImage(image, 0,0,null);
imageGraphics.fillOval((int) center.getX()-2, (int) center.getY()-2,10, 10);
imageGraphics.drawLine((int)start.getX(), (int)start.getY(), (int)end.getX(), (int)end.getY());
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
try {
encoder.encode(bufImage);
} catch (ImageFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}有谁能帮我解决一下,如果有其他方法,能给示例代码最好。急
String filename= "D:\\map.jpg";
File file = new File("D:\\maptemp.jpg");
FileOutputStream out = new FileOutputStream(file);
//构造一个缓冲的图像。
Image image = new ImageIcon(filename).getImage();
//创建一个BufferedImage, 然后把导入的图片先画到这个BufferedImage.
BufferedImage bufImage = new BufferedImage(image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_RGB);
Graphics imageGraphics = bufImage.getGraphics();
Point center = new Point(10,10);
Point start =new Point(0,0);
Point end = new Point(100,100);
imageGraphics.drawImage(image, 0,0,null);
imageGraphics.fillOval((int) center.getX()-2, (int) center.getY()-2,10, 10);
imageGraphics.drawLine((int)start.getX(), (int)start.getY(), (int)end.getX(), (int)end.getY());
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
try {
encoder.encode(bufImage);
} catch (ImageFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}有谁能帮我解决一下,如果有其他方法,能给示例代码最好。急
解决方案 »
- java socket编码问题!!!!
- 数组问题 报错!!!!!!!!!!!!!!!!!!!!!!!!!!
- 谁能告诉我msbase.jar mssqlserver.jar msutil.jar的下载URL啊......
- 有关捕捉错误
- 如何将jbuilder中的项目导出整个项目的UML图
- 生成浏览器里地址栏中的百分号等等之类的东西有什么规范吗
- 帮忙!请问在Linux下面怎么改Java的CLASSPATH?
- jdk1.4 的问题。
- 求救:SAXParserFactory saxFact = SAXParserFactory.newInstance();错误
- 顺序问题
- 继续发题玩
- 既要设置一个get方法,又要禁止修改内部属性,该怎么办?
import javax.swing.*;
import javax.imageio.*;
import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;
import java.io.*;
public class TestDrawImage {
JFrame frame;
Container contentPane;
JPanel pan;
BufferedImage buffer;
public TestDrawImage(){
frame=new JFrame();
contentPane=frame.getContentPane();
try{
buffer=ImageIO.read(new File("002.bmp"));
Graphics g=buffer.getGraphics();
g.setColor(Color.red);
g.setFont(new Font("楷体",Font.PLAIN,40));
g.drawString("哈哈,我改了", 50, 50);
FileOutputStream fos=new FileOutputStream("new.bmp");
ImageIO.write(buffer, "bmp", fos);
fos.close();
}catch(IOException e){}
pan=new JPanel(){
public void paint(Graphics g){
if(buffer!=null){
g.drawImage(buffer, 0, 0, null);
}
}
};
contentPane.add(pan);
if(buffer==null){
frame.setSize(new Dimension(400,400));
}else{
frame.setSize(new Dimension(buffer.getWidth(),buffer.getHeight()));
}
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public static void main(String args[]){
new TestDrawImage();
}
}