import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
public class DragApplet extends Applet
{
private static final long serialVersionUID = 1L;
private Image image;
Point pressed = new Point();
Point lastTranslate = new Point();
public void init()
{
image = getImage(getDocumentBase(), "1.jpg");// 这里是加载图片的
try
{
MediaTracker mt = new MediaTracker(this);
mt.addImage(image, 0);
mt.waitForID(0);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent e)
{
Point Ioc = e.getPoint();
pressed.x = Ioc.x - lastTranslate.x;
pressed.y = Ioc.y - lastTranslate.y;
}
});
addMouseMotionListener(new MouseMotionAdapter()
{
public void mouseDragged(MouseEvent e)
{
Point Ioc = e.getPoint();
Point translate = new Point(Ioc.x - pressed.x, Ioc.y
- pressed.y);
Graphics g = getGraphics();
try
{
g.clearRect(0, 0, getSize().width, getSize().height);
g.translate(translate.x, translate.y);
showStatus("Translating Graphics:" + translate);
g.drawImage(image, 0, 0, DragApplet.this);
}
finally
{
g.dispose();
}
lastTranslate = translate;
}
});
}
public void update(Graphics g)// 我已经进行了消除闪动了???
{
paint(g);
}
public void paint(Graphics g)
{
g.drawImage(image, 0, 0, this);
}
}
我如何才能将applet中的东西保存为jpg格式的图片呢?
我知道这个方法:
BufferedImage bufImg = ImageIO.read(new File("e:\\4.jpg"));
输出方法:
ImageIO.write(bufImg, ".JPEG", new File("e:\\2.jpg"));
但现在不清楚。。。如何把applet中画出的图形保存为一张图片呢?
问题补充:
该问题已经解决,在此谢谢热心帮助我的朋友们!
import java.applet.Applet;
import java.awt.Button;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.FileDialog;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.HeadlessException;
import java.awt.Image;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;import javax.imageio.ImageIO;
import javax.swing.ImageIcon;import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;public class SaveApplet extends Applet implements ActionListener
{private static final long serialVersionUID = 1L; public SaveApplet() throws HeadlessException { super(); } BufferedImage bi; Graphics gg = null; Panel panel = null; Button button1 = null; Button button2 = null; Image tempImage = null; Canvas mycanvas = null; public void init() { bi = new BufferedImage(1024, 800, BufferedImage.TYPE_INT_RGB); gg = bi.getGraphics(); panel = new Panel(); button1 = new Button("open"); button2 = new Button("save"); panel.add(button1); panel.add(button2); add(panel); button1.addActionListener(this); button2.addActionListener(this); } public void paint(Graphics g) { gg.setColor(Color.red); gg.drawRect(10, 10, 50, 50); // 红色画矩形 gg.setColor(Color.blue); gg.fillOval(50, 50, 80, 80); // 蓝色圆形 gg.dispose(); g.drawImage(bi, 0, 0, this); } public void actionPerformed(ActionEvent e) { if (e.getSource() == button1) { Frame f = new fileDialog("File Dialog Demo!"); f.setVisible(false); f.setSize(100, 100); FileDialog fd1 = new FileDialog(f, "File Dialog", FileDialog.LOAD); fd1.setVisible(true); try { File f2 = new File(fd1.getDirectory(), fd1.getFile()); FileInputStream readfile = new FileInputStream(f2); tempImage = ImageIO.read(new File(fd1.getDirectory(), fd1 .getFile())); mycanvas = new Canvas(); mycanvas.setBounds(400, 300, 100, 100); add(mycanvas); } catch (IOException e1) { e1.printStackTrace(); } } else if (e.getSource() == button2) { Frame f = new fileDialog("File Dialog Demo!"); f.setVisible(false); f.setSize(100, 100); FileDialog fd = new FileDialog(f, "File Dialog", FileDialog.SAVE); fd.setVisible(true); try { // File f1 = new File(fd.getDirectory(), fd.getFile()); // FileOutputStream out = new FileOutputStream(f1); // // JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); // JPEGEncodeParam param = // encoder.getDefaultJPEGEncodeParam(bi); // param.setQuality(1.0f, false); // encoder.setJPEGEncodeParam(param); // encoder.encode(bi); // out.close(); if (fd.getFile() != null) { String pathStr = fd.getDirectory(); pathStr = pathStr.replace("\\", "\\\\"); String path = pathStr + fd.getFile(); ImageIO.write(bi, "JPEG", new File(path)); } } catch (IOException e2) { e2.printStackTrace(); } } } class fileDialog extends Frame { private static final long serialVersionUID = 1L; fileDialog(String title) { super(title); MyWindowAdapter adapter = new MyWindowAdapter(this); addWindowListener(adapter); } } class MyWindowAdapter extends WindowAdapter { fileDialog sf; public MyWindowAdapter(fileDialog sfr) { this.sf = sfr; } public void windowClosing(WindowEvent we) { sf.setVisible(false); } }}