import
This commit is contained in:
@@ -0,0 +1,177 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user