2 years ago
#55720

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