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); } }
}