2 years ago

#55720

test-img

dodo

How can i add photo to label and save it to folder?

How can I open file explorer, select a photo file, add some effects, and then save it but by opening file explorer to let me choose where to save the new photo with effect added. I have no idea. Please help me.

public class Imagine extends JFrame {

DisplayPanel displayPanel;
JButton brightenButton, darkenButton, contrastIncButton, contrastDecButton, reverseButton, resetButton, addPhotoButton,savePhoto;

public Imagine()
{
    super();
    Container container = getContentPane();
    displayPanel = new DisplayPanel();
    container.add(displayPanel);

    JPanel panel = new JPanel();
    panel.setLayout(new GridLayout(4, 4));
    panel.setBorder(new TitledBorder("Choose option"));

    addPhotoButton = new JButton("Select photo");
    addPhotoButton.addActionListener(new ButtonListener());

    savePhoto = new JButton("Save photo");
    savePhoto.addActionListener(new ButtonListener());

    brightenButton = new JButton("Luminozitate +");
    brightenButton.addActionListener(new ButtonListener());
    darkenButton = new JButton("Luminozitate -");
    darkenButton.addActionListener(new ButtonListener());
    contrastIncButton = new JButton("Contrast +");
    contrastIncButton.addActionListener(new ButtonListener());
    contrastDecButton = new JButton("Contrast -");
    contrastDecButton.addActionListener(new ButtonListener());
    reverseButton = new JButton("Negative");
    reverseButton.addActionListener(new ButtonListener());
    resetButton = new JButton("Reset");
    resetButton.addActionListener(new ButtonListener());

    panel.add(addPhotoButton);
    panel.add(savePhoto);
    panel.add(brightenButton);
    panel.add(darkenButton);
    panel.add(contrastIncButton);
    panel.add(contrastDecButton);
    panel.add(reverseButton);
    panel.add(resetButton);

    container.add(BorderLayout.SOUTH, panel);

    addWindowListener(new WindowEventHandler());
    setSize(displayPanel.getWidth(), displayPanel.getHeight() + 25);
    show();
}

class WindowEventHandler extends WindowAdapter
{
    public void windowClosing(WindowEvent e)
    {
        System.exit(0);
    }
}

public static void main(String arg[])
{
     new Imagine();

    //select file
    //ImagesLoading a = new ImagesLoading();
    //a.initialize();
}

class ButtonListener implements ActionListener
{
    public void actionPerformed(ActionEvent e)
    {
        JButton button = (JButton) e.getSource();

        if (button.equals(brightenButton))
        {
            displayPanel.brightenLUT();
            displayPanel.applyFilter();
            displayPanel.repaint();
        }
        else
            if (button.equals(darkenButton))
            {
                displayPanel.darkenLUT();
                displayPanel.applyFilter();
                displayPanel.repaint();
            }
            else
                if (button.equals(contrastIncButton))
                {
                    displayPanel.contrastIncLUT();
                    displayPanel.applyFilter();
                    displayPanel.repaint();
                } else
                    if (button.equals(contrastDecButton))
                    {
                        displayPanel.contrastDecLUT();
                        displayPanel.applyFilter();
                        displayPanel.repaint();
                    }
                    else
                        if (button.equals(reverseButton))
                        {
                            displayPanel.reverseLUT();
                            displayPanel.applyFilter();
                            displayPanel.repaint();
                        } else
                            if (button.equals(resetButton))
                            {
                                displayPanel.reset();
                                displayPanel.repaint();
                            }
                            else
                                if (button.equals(addPhotoButton))
                                {
                                    JFrame fr = new JFrame("Image loading program Using awt");
                                    FileDialog fd = new FileDialog(fr, "Open", FileDialog.LOAD);
                                    fd.show();
                                    String d = (fd.getDirectory() + fd.getFile());
                                    System.out.println(d);
                                }
                                else
                                if (button.equals(savePhoto))
                                {


//
                                }
    }
}
}

class DisplayPanel extends JPanel
{
Image displayImage;
BufferedImage bi;
Graphics2D big;
LookupTable lookupTable;

DisplayPanel()
{
    setBackground(Color.black); // panel background color
    loadImage();
    setSize(displayImage.getWidth(this), displayImage.getWidth(this)); // panel
    createBufferedImage();
}

public void loadImage()
{
    displayImage = Toolkit.getDefaultToolkit().getImage("a.jpg");
    MediaTracker mt = new MediaTracker(this);
    mt.addImage(displayImage, 1);
    try {
        mt.waitForAll();
    } catch (Exception e) {
        System.out.println("exception while loading.");
    }

    if (displayImage.getWidth(this) == -1) {
        System.out.println("no jpg file");
        System.exit(0);
    }
}

public void createBufferedImage()
{
    bi = new BufferedImage(displayImage.getWidth(this), displayImage.getHeight(this), BufferedImage.TYPE_INT_ARGB);
    big = bi.createGraphics();
    big.drawImage(displayImage, 0, 0, this);
}

public void brightenLUT()
{
    short brighten[] = new short[256];
    for (int i = 0; i < 256; i++) {
        short pixelValue = (short) (i + 10);
        if (pixelValue > 255)
            pixelValue = 255;
        else if (pixelValue < 0)
            pixelValue = 0;
        brighten[i] = pixelValue;
    }
    lookupTable = new ShortLookupTable(0, brighten);
}

public void darkenLUT()
{
    short brighten[] = new short[256];
    for (int i = 0; i < 256; i++) {
        short pixelValue = (short) (i - 10);
        if (pixelValue > 255)
            pixelValue = 255;
        else if (pixelValue < 0)
            pixelValue = 0;
        brighten[i] = pixelValue;
    }
    lookupTable = new ShortLookupTable(0, brighten);
}

public void contrastIncLUT()
{
    short brighten[] = new short[256];
    for (int i = 0; i < 256; i++) {
        short pixelValue = (short) (i * 1.2);
        if (pixelValue > 255)
            pixelValue = 255;
        else if (pixelValue < 0)
            pixelValue = 0;
        brighten[i] = pixelValue;
    }
    lookupTable = new ShortLookupTable(0, brighten);
}

public void contrastDecLUT()
{
    short brighten[] = new short[256];
    for (int i = 0; i < 256; i++) {
        short pixelValue = (short) (i / 1.2);
        if (pixelValue > 255)
            pixelValue = 255;
        else if (pixelValue < 0)
            pixelValue = 0;
        brighten[i] = pixelValue;
    }
    lookupTable = new ShortLookupTable(0, brighten);
}

public void reverseLUT()
{
    byte reverse[] = new byte[256];
    for (int i = 0; i < 256; i++) {
        reverse[i] = (byte) (255 - i);
    }
    lookupTable = new ByteLookupTable(0, reverse);
}

public void reset()
{
    big.setColor(Color.black);
    big.clearRect(0, 0, bi.getWidth(this), bi.getHeight(this));
    big.drawImage(displayImage, 0, 0, this);
}

public void applyFilter()
{
    LookupOp lop = new LookupOp(lookupTable, null);
    lop.filter(bi, bi);
}

public void update(Graphics g)
{
    g.clearRect(0, 0, getWidth(), getHeight());
    paintComponent(g);
}

public void paintComponent(Graphics g)
{
    super.paintComponent(g);
    Graphics2D g2D = (Graphics2D) g;
    g2D.drawImage(bi, 0, 0, this);
}
}

How to save the added photo with new effects that I selected to a location that I can select from file explorer How can I open file explorer, select a photo file, add some effects, and then save it but by opening file explorer to let me choose where to save the new photo with effect added. I have no idea. Please help me.

java

swing

filter

label

photo

0 Answers

Your Answer

Accepted video resources