| using System; |
| using System.Drawing; |
| using System.Windows.Forms; |
| using FreeImageAPI; |
| using System.Drawing.Imaging; |
| |
| namespace Sample06 |
| { |
| public partial class MainForm : Form |
| { |
| [STAThread] |
| static void Main() |
| { |
| Application.EnableVisualStyles(); |
| Application.SetCompatibleTextRenderingDefault(false); |
| Application.Run(new MainForm()); |
| } |
| |
| public MainForm() |
| { |
| InitializeComponent(); |
| } |
| |
| private void bExample01_Click(object sender, EventArgs e) |
| { |
| // Load bitmap |
| FIBITMAP dib = FreeImage.LoadEx("Sample.jpg"); |
| |
| // Check success |
| if (dib.IsNull) |
| { |
| MessageBox.Show("Could not load Sample.jpg", "Error"); |
| return; |
| } |
| |
| // Check whether bitmap is 24-bit |
| if (FreeImage.GetBPP(dib) != 24) |
| { |
| MessageBox.Show("Sample.jpg is not 24-bit.", "Error"); |
| FreeImage.UnloadEx(ref dib); |
| return; |
| } |
| |
| // Convert the 24-bit bitmap to 8-bit and forcing the result will be greyscale |
| dib = FreeImage.ConvertColorDepth(dib, FREE_IMAGE_COLOR_DEPTH.FICD_08_BPP | FREE_IMAGE_COLOR_DEPTH.FICD_FORCE_GREYSCALE, true); |
| |
| if (FreeImage.GetBPP(dib) == 8) |
| { |
| // Convert the FreeImage-Bitmap into a .NET bitmap |
| Bitmap bitmap = FreeImage.GetBitmap(dib); |
| |
| // Dispose the bitmap of the pictureBox |
| if (picBox.Image != null) |
| { |
| picBox.Image.Dispose(); |
| } |
| |
| // Assign the bitmap to the picturebox |
| picBox.Image = bitmap; |
| } |
| |
| // Unload source bitmap |
| FreeImage.UnloadEx(ref dib); |
| } |
| |
| private void bOriginal_Click(object sender, EventArgs e) |
| { |
| // Load bitmap |
| FIBITMAP dib = FreeImage.LoadEx("Sample.jpg"); |
| |
| // Check success |
| if (dib.IsNull) |
| { |
| MessageBox.Show("Could not load Sample.jpg", "Error"); |
| return; |
| } |
| |
| // Convert the FreeImage-Bitmap into a .NET bitmap |
| Bitmap bitmap = FreeImage.GetBitmap(dib); |
| |
| // Check success |
| if (bitmap != null) |
| { |
| // Dispose old bitmap |
| if (picBox.Image != null) |
| { |
| picBox.Image.Dispose(); |
| } |
| |
| // Assign new bitmap |
| picBox.Image = bitmap; |
| } |
| |
| // Unload bitmap |
| FreeImage.UnloadEx(ref dib); |
| } |
| |
| private void bExample02_Click(object sender, EventArgs e) |
| { |
| FIBITMAP dib = FreeImage.LoadEx("Sample.jpg"); |
| |
| // Check success |
| if (dib.IsNull) |
| { |
| MessageBox.Show("Could not load Sample.jpg", "Error"); |
| return; |
| } |
| |
| // Convert bitmap to 8 bit |
| dib = FreeImage.ConvertColorDepth(dib, FREE_IMAGE_COLOR_DEPTH.FICD_08_BPP, true); |
| |
| // Check whether conversion succeeded |
| if (FreeImage.GetBPP(dib) != 8) |
| { |
| MessageBox.Show("Converting Sample.jpg to 8-bit failed.", "Error"); |
| FreeImage.UnloadEx(ref dib); |
| return; |
| } |
| |
| // Convert the FreeImage-Bitmap into a .NET bitmap |
| Bitmap bitmap = FreeImage.GetBitmap(dib); |
| |
| // Dispose old bitmap |
| if (picBox.Image != null) |
| { |
| picBox.Image.Dispose(); |
| } |
| |
| // Assign new bitmap |
| picBox.Image = bitmap; |
| |
| // Unload bitmap |
| FreeImage.UnloadEx(ref dib); |
| } |
| |
| private void bExample03_Click(object sender, EventArgs e) |
| { |
| // Load bitmap |
| Bitmap bitmap = (Bitmap)Bitmap.FromFile("Sample.jpg"); |
| |
| // Convert the .NET bitmap into a FreeImage-Bitmap |
| FIBITMAP dib = FreeImage.CreateFromBitmap(bitmap); |
| |
| // Unload bitmap |
| bitmap.Dispose(); |
| |
| // Rescale the bitmap |
| FIBITMAP temp = FreeImage.Rescale(dib, 300, 300, FREE_IMAGE_FILTER.FILTER_BICUBIC); |
| |
| // Unload bitmap |
| FreeImage.UnloadEx(ref dib); |
| |
| Random rand = new Random(); |
| |
| // Rotate the bitmap |
| dib = FreeImage.Rotate(temp, rand.NextDouble() * 360d); |
| |
| // Unload bitmap |
| FreeImage.UnloadEx(ref temp); |
| |
| // Convert the FreeImage-Bitmap into a .NET bitmap |
| bitmap = FreeImage.GetBitmap(dib); |
| |
| // Unload bitmap |
| FreeImage.UnloadEx(ref dib); |
| |
| // Unload bitmap |
| if (picBox.Image != null) |
| { |
| picBox.Image.Dispose(); |
| } |
| |
| // Assign new bitmap |
| picBox.Image = bitmap; |
| } |
| } |
| } |