Your application will load a collection of images and displa
Your application will load a collection of images and displays them in a photo album layout.
The program will allow the user to tag images with metadata:
• Title for the photo. Limited to 100 characters.
• Description for the photo. Limited to 300 characters.
• Date taken
• Place taken Functional Specification
1. Your album should be able to display the pictures sorted by Title, Date, and Place.
2. When the user clicks on a photo, the metadata should be displayed.
3. The user should be able to add or remove photos from the album
I have looked up a number of different solutions from previous questions and none of them are complete programs.
Solution
While Observing your question I did not get a clarity for which language either like java, Android.
So, I thought like let me do it in java itself.
An answer for the problem description is as follows:
Read an image from the local filesystem, create a BufferedImage from that image file, create an ImageIcon from that image, place that ImageIcon on a JLabel, and finally show the image in a JFrame
import java.awt.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import javax.swing.*;
public class ImageDemo
{
public static void main(String[] args) throws Exception
{
new ImageDemo(args[0]);
}
public ImageDemo(final String filename) throws Exception
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
JFrame editorFrame = new JFrame(\"Image Demo\");
editorFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
BufferedImage image = null;
try
{
image = ImageIO.read(new File(filename));
}
catch (Exception e)
{
e.printStackTrace();
System.exit(1);
}
ImageIcon imageIcon = new ImageIcon(image);
JLabel jLabel = new JLabel();
jLabel.setIcon(imageIcon);//set the image
jLabel.setDisplayedMnemonic(\"An Image with beautiful graphics\");//set the description
editorFrame.getContentPane().add(jLabel, BorderLayout.CENTER);
editorFrame.pack();
editorFrame.setLocationRelativeTo(null);
editorFrame.setVisible(true);
}
});
}
}

