177 lines
3.8 KiB
C#
177 lines
3.8 KiB
C#
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;
|
|
}
|
|
}
|
|
} |