using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using FreeImageAPI; using System.Net; using System.IO; namespace Sample09 { public partial class SampleForm : Form { [STAThread] static void Main() { // Check if FreeImage is available if (!FreeImage.IsAvailable()) { throw new Exception("FreeImage is not available!"); } Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new SampleForm()); } public SampleForm() { InitializeComponent(); } private void bLoadUrl_Click(object sender, EventArgs e) { // Verify url if (String.IsNullOrEmpty(tbURL.Text)) { MessageBox.Show("Please enter a valid URL.", "Error"); return; } FIBITMAP dib = new FIBITMAP(); Stream sourceStream = null; try { // Build a stream to read from WebRequest request = (WebRequest)HttpWebRequest.Create(tbURL.Text); WebResponse response = request.GetResponse(); sourceStream = response.GetResponseStream(); if (sourceStream == null) { throw new Exception(); } // Load the image from stream dib = FreeImage.LoadFromStream(sourceStream); // Check success if (dib.IsNull) { throw new Exception(); } // Convert the bitmap into a .NET bitmap Bitmap bitmap = FreeImage.GetBitmap(dib); if (bitmap == null) { throw new Exception(); } // Show the bitmap if (picBox.Image != null) { picBox.Image.Dispose(); } picBox.Image = bitmap; } catch { // Error handling MessageBox.Show("Error loading URL.", "Error"); } finally { // Clean up memory FreeImage.UnloadEx(ref dib); if (sourceStream != null) sourceStream.Dispose(); } } private void bSave_Click(object sender, EventArgs e) { // Check if there is a loaded bitmap if (picBox.Image == null) { MessageBox.Show("No image loaded.", "Error"); return; } SaveFileDialog sfd = null; FileStream fStream = null; FIBITMAP dib = new FIBITMAP(); try { sfd = new SaveFileDialog(); sfd.CreatePrompt = false; sfd.FileName = ""; sfd.Filter = "TIF (*tif)|*.tif"; sfd.OverwritePrompt = true; sfd.RestoreDirectory = true; if (sfd.ShowDialog() == DialogResult.OK) { // Convert the .NET bitmap into a FreeImage-Bitmap dib = FreeImage.CreateFromBitmap((Bitmap)picBox.Image); if (dib.IsNull) { throw new Exception(); } // Create a filestream to write to fStream = new FileStream(sfd.FileName, FileMode.Create); if (!FreeImage.SaveToStream( ref dib, fStream, FREE_IMAGE_FORMAT.FIF_TIFF, FREE_IMAGE_SAVE_FLAGS.TIFF_LZW, FREE_IMAGE_COLOR_DEPTH.FICD_AUTO, false)) { throw new Exception(); } MessageBox.Show("Image saved successfully.", "Success"); } else { MessageBox.Show("Operation aborted.", "Aborted"); } } catch { MessageBox.Show("Error saving image.", "Error"); } finally { // Clean up if (sfd != null) sfd.Dispose(); if (fStream != null) fStream.Dispose(); FreeImage.UnloadEx(ref dib); } } } }