Save an Image to a File in a Applet?

2019-02-11 01:11发布

So here is te thing, Im trying to do an Applet for a webgame to produces "custom" avatars, this avatar are for a kind off an army of a country, so the avatar cosnsit on the image of the choice of the user, and a frame on the picture thtat represent the quad that the user belongs too.

So my plan is to make them choose from a file from their computer, and then they choose the squd that they belong to. After this they will see a preview of the picutre and they can save it to their computer to later use it on the game.

I know that you can draw image with a Graphic or Graphic2D on the background of a component, but then when I want to save it to a file, How I do that?

5条回答
Explosion°爆炸
2楼-- · 2019-02-11 01:24

Digital code signing is not required for an applet deployed using a Plug-In 2 (PI2 - 1.6.0_10+) architecture JRE. In a PI2 JRE, an embedded applet can access all the services normally only available to Java Web Start apps.

The services of interest to this applet would be the FileOpenService (FOS), and the PersistenceService (PS). The FOS could be used to allow the user to navigate to a File (or rather - a FileContents) object and obtain streams from it. Once the user is happy with the cropped image, save in to the PS for later retrieval (using ImageIO, as already mentioned).

查看更多
Root(大扎)
3楼-- · 2019-02-11 01:29

here is the notepad code where u can save the contents and also if u convert the text into an image.so try going through it

/*Arpana*/

mport javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.util.Scanner;

import java.io.*;



public class Notepad extends JFrame implements ActionListener {

    private TextArea textArea = new TextArea("", 0,0, TextArea.SCROLLBARS_VERTICAL_ONLY);

    private MenuBar menuBar = new MenuBar(); // first, create a MenuBar item

    private Menu file = new Menu(); // our File menu

    // what's going in File? let's see...

    private MenuItem openFile = new MenuItem();  // an open option

    private MenuItem saveFile = new MenuItem(); // a save option

    private MenuItem close = new MenuItem(); // and a close option!



    public Notepad() {

        this.setSize(500, 300); // set the initial size of the window

       this.setTitle("Java Notepad Tutorial"); // set the title of the window

        setDefaultCloseOperation(EXIT_ON_CLOSE); // set the default close operation (exit when it gets closed)

        this.textArea.setFont(new Font("Century Gothic", Font.BOLD, 12)); // set a default font for the TextArea

        // this is why we didn't have to worry about the size of the TextArea!

        this.getContentPane().setLayout(new BorderLayout()); // the BorderLayout bit makes it fill it automatically

        this.getContentPane().add(textArea);



        // add our menu bar into the GUI

        this.setMenuBar(this.menuBar);

        this.menuBar.add(this.file); // we'll configure this later



        // first off, the design of the menuBar itself. Pretty simple, all we need to do

       // is add a couple of menus, which will be populated later on

        this.file.setLabel("File");



        // now it's time to work with the menu. I'm only going to add a basic File menu

        // but you could add more!



        // now we can start working on the content of the menu~ this gets a little repetitive,

      // so please bare with me!



        // time for the repetitive stuff. let's add the "Open" option

        this.openFile.setLabel("Open"); // set the label of the menu item

        this.openFile.addActionListener(this); // add an action listener (so we know when it's been clicked

        this.openFile.setShortcut(new MenuShortcut(KeyEvent.VK_O, false)); // set a keyboard shortcut

        this.file.add(this.openFile); // add it to the "File" menu



        // and the save...

        this.saveFile.setLabel("Save");

        this.saveFile.addActionListener(this);

        this.saveFile.setShortcut(new MenuShortcut(KeyEvent.VK_S, false));

        this.file.add(this.saveFile);



        // and finally, the close option

        this.close.setLabel("Close");

        // along with our "CTRL+F4" shortcut to close the window, we also have

      // the default closer, as stated at the beginning of this tutorial.

        // this means that we actually have TWO shortcuts to close:

        // 1) the default close operation (example, Alt+F4 on Windows)

        // 2) CTRL+F4, which we are about to define now: (this one will appear in the label)

        this.close.setShortcut(new MenuShortcut(KeyEvent.VK_F4, false));

        this.close.addActionListener(this);

        this.file.add(this.close);

    }



    public void actionPerformed (ActionEvent e) {

        // if the source of the event was our "close" option

        if (e.getSource() == this.close)

            this.dispose(); // dispose all resources and close the application



        // if the source was the "open" option

        else if (e.getSource() == this.openFile) {

            JFileChooser open = new JFileChooser(); // open up a file chooser (a dialog for the user to browse files to open)

            int option = open.showOpenDialog(this); // get the option that the user selected (approve or cancel)

            // NOTE: because we are OPENing a file, we call showOpenDialog~

            // if the user clicked OK, we have "APPROVE_OPTION"

            // so we want to open the file

            if (option == JFileChooser.APPROVE_OPTION) {

                this.textArea.setText(""); // clear the TextArea before applying the file contents

                try {

                    // create a scanner to read the file (getSelectedFile().getPath() will get the path to the file)

                    Scanner scan = new Scanner(new FileReader(open.getSelectedFile().getPath()));

                    while (scan.hasNext()) // while there's still something to read

                        this.textArea.append(scan.nextLine() + "\n"); // append the line to the TextArea

                } catch (Exception ex) { // catch any exceptions, and...

                    // ...write to the debug console

                    System.out.println(ex.getMessage());

                }

            }

        }



        // and lastly, if the source of the event was the "save" option

        else if (e.getSource() == this.saveFile) {

            JFileChooser save = new JFileChooser(); // again, open a file chooser

            int option = save.showSaveDialog(this); // similar to the open file, only this time we call

            // showSaveDialog instead of showOpenDialog

            // if the user clicked OK (and not cancel)

            if (option == JFileChooser.APPROVE_OPTION) {

                try {

                    // create a buffered writer to write to a file

                    BufferedWriter out = new BufferedWriter(new FileWriter(save.getSelectedFile().getPath()));

                  out.write(this.textArea.getText()); // write the contents of the TextArea to the file

                    out.close(); // close the file stream

                } catch (Exception ex) { // again, catch any exceptions and...

                    // ...write to the debug console

                    System.out.println(ex.getMessage());

                }

            }

        }

    }

    // the main method, for actually creating our notepad and setting it to visible.

    public static void main(String args[]) {

      Notepad app = new Notepad();

        app.setVisible(true);

}

}
查看更多
乱世女痞
4楼-- · 2019-02-11 01:32

Use JFileChooser#showSaveDialog() to ask user to select/specify a file to save and then use ImageIO#write() to write the BufferedImage to the file.

JFileChooser fileChooser = new JFileChooser();
if (fileChooser.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) {
    ImageIO.write(bufferedImage, "JPEG", fileChooser.getSelectedFile());
} else {
    // User pressed cancel.
}

The applet needs however to be signed to avoid the enduser being scared by security warnings.

查看更多
Root(大扎)
5楼-- · 2019-02-11 01:32

I think I'd be inclined to interact the Java with Javascript on the same page, and give an 'export' button which serialises it to PNG locally, and offers it as a download (should be possible all without the user needing to refresh the page or mess around). There are some interesting comments in this previous question: Java applet - saving an image in a png format

查看更多
贼婆χ
6楼-- · 2019-02-11 01:32

The notepad program which i have posted just above this post gives the load image of any type and also to save image of any type....

so you cab refer the same code to load the image and save the image

查看更多
登录 后发表回答