import
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
using FreeImageAPI;
|
||||
using FreeImageAPI.Metadata;
|
||||
|
||||
namespace Sample10
|
||||
{
|
||||
public partial class MainForm : Form
|
||||
{
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
// Check if FreeImage.dll is available
|
||||
if (!FreeImage.IsAvailable())
|
||||
{
|
||||
MessageBox.Show("FreeImage is not available. Aborting.", "Error");
|
||||
}
|
||||
|
||||
// Add this class to the FreeImage-Message-Callback
|
||||
FreeImageEngine.Message += new OutputMessageFunction(FreeImage_Message);
|
||||
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
Application.Run(new MainForm());
|
||||
}
|
||||
|
||||
static void FreeImage_Message(FREE_IMAGE_FORMAT fif, string message)
|
||||
{
|
||||
// Display the data
|
||||
MessageBox.Show(
|
||||
String.Format("FreeImage-Message:\n{1}\nFormat:{0}", fif.ToString(), message),
|
||||
"FreeImage-Message");
|
||||
}
|
||||
|
||||
public MainForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void bQuit_Click(object sender, EventArgs e)
|
||||
{
|
||||
Application.Exit();
|
||||
}
|
||||
|
||||
private void bLoad_Click(object sender, EventArgs e)
|
||||
{
|
||||
// Create variables
|
||||
OpenFileDialog ofd = new OpenFileDialog();
|
||||
FIBITMAP dib = new FIBITMAP();
|
||||
try
|
||||
{
|
||||
// Apply settings
|
||||
ofd.CheckFileExists = true;
|
||||
ofd.CheckPathExists = true;
|
||||
ofd.FileName = "";
|
||||
ofd.Filter = "All files (*.*)|*.*";
|
||||
ofd.Multiselect = false;
|
||||
ofd.RestoreDirectory = true;
|
||||
// Get image filename
|
||||
if (ofd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
// Load the image
|
||||
dib = FreeImage.LoadEx(ofd.FileName);
|
||||
// Check if image was loaded successfully
|
||||
if (dib.IsNull) throw new Exception("Failed to load image.");
|
||||
// Clear the treeview
|
||||
tvMetadata.Nodes.Clear();
|
||||
// Create a wrapper for all metadata the image contains
|
||||
ImageMetadata iMetadata = new ImageMetadata(dib);
|
||||
// Get each metadata model
|
||||
foreach (MetadataModel metadataModel in iMetadata)
|
||||
{
|
||||
// Create a new node for each model
|
||||
TreeNode modelNode = tvMetadata.Nodes.Add(metadataModel.ToString());
|
||||
|
||||
// Get each metadata tag and create a subnode for it
|
||||
foreach (MetadataTag metadataTag in metadataModel)
|
||||
{
|
||||
modelNode.Nodes.Add(metadataTag.Key + ": " + metadataTag.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show("Operation aborted.", "Aborted");
|
||||
}
|
||||
}
|
||||
// Display error message
|
||||
catch (Exception ex)
|
||||
{
|
||||
while (ex.InnerException != null)
|
||||
ex = ex.InnerException;
|
||||
MessageBox.Show(ex.ToString(), "Exception caught");
|
||||
}
|
||||
// Clean up
|
||||
finally
|
||||
{
|
||||
ofd.Dispose();
|
||||
FreeImage.UnloadEx(ref dib);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user