111,092
社区成员




FIBITMAP src = new FIBITMAP();
if (!FreeImage.IsAvailable())
{
MessageBox.Show("FreeImage.dll seems to be missing. Aborting.");
return null;
}
if (!System.IO.File.Exists(fileName))
{
MessageBox.Show(fileName + " does not exist. Aborting.");
return null;
}
if (!src.IsNull)
FreeImage.Unload(src);
src = FreeImage.Load(FREE_IMAGE_FORMAT.FIF_JPEG, fileName, FREE_IMAGE_LOAD_FLAGS.JPEG_ACCURATE);
if (src.IsNull)
{
MessageBox.Show("Loading bitmap failed. Aborting.");
return null;
}
int bpp = (int)FreeImage.GetBPP(src);
int width = (int)FreeImage.GetWidth(src);
int height = (int)FreeImage.GetHeight(src);
int newheight = width / 2;
FIBITMAP dib = FreeImage.Allocate(width, newheight, bpp, FreeImage.FI_RGBA_RED_MASK,
FreeImage.FI_RGBA_GREEN_MASK, FreeImage.FI_RGBA_BLUE_MASK);
if (dib.IsNull)
{
FreeImage.Unload(src);
dib = FreeImage.Allocate(width, newheight, bpp, FreeImage.FI_RGBA_RED_MASK,
FreeImage.FI_RGBA_GREEN_MASK, FreeImage.FI_RGBA_BLUE_MASK);
src = FreeImage.Load(FREE_IMAGE_FORMAT.FIF_JPEG, fileName, FREE_IMAGE_LOAD_FLAGS.JPEG_ACCURATE);
}