using FreeImageAPI; namespace News.program.Helpers { public class FreeImageHelper { public static bool Resize(string Filename, int MaxWidth, int MaxHeight, bool fixHeight, bool fixWidth) { int num4; int num5; uint dib = 0; dib = FreeImage.Load(FIF.FIF_JPEG, Filename, 0); uint width = FreeImage.GetWidth(dib); uint height = FreeImage.GetHeight(dib); double num6 = ((double) width)/((double) height); if ((width == MaxWidth) && (height == MaxHeight)) { FreeImage.Unload(dib); return false; } if (fixHeight) { num5 = MaxHeight; num4 = (int) (num5*num6); } else if (fixWidth) { num4 = MaxWidth; num5 = (int) (((double) num4)/num6); } else if (width > height) { num4 = MaxWidth; num5 = (int) (((double) num4)/num6); } else { num5 = MaxHeight; num4 = (int) (num5*num6); } uint num7 = FreeImage.Rescale(dib, num4, num5, FI_FILTER.FILTER_BICUBIC); FreeImage.Save(FIF.FIF_JPEG, num7, Filename, 0x80 /*LoadSaveFlags.JPEG_QUALITYSUPERB*/); FreeImage.Unload(dib); FreeImage.Unload(num7); return true; } public static bool ResizeClipped(string Filename, int Width, int Height, bool center) { int num4; int num5; uint dib = 0; dib = FreeImage.Load(FIF.FIF_JPEG, Filename, 0); uint width = FreeImage.GetWidth(dib); uint height = FreeImage.GetHeight(dib); if ((Width == width) && (Height == height)) { FreeImage.Unload(dib); return false; } double num6 = ((double) width)/((double) height); double num7 = ((double) Width)/((double) Height); if (num7 < num6) { num5 = (int) height; num4 = (int) (num5*num7); } else { num4 = (int) width; num5 = (int) (((double) width)/num7); } uint num8 = FreeImage.Rescale(FreeImage.Copy(dib, 0, 0, num4, num5), Width, Height, FI_FILTER.FILTER_CATMULLROM); FreeImage.Save(FIF.FIF_JPEG, num8, Filename, 0x4b); FreeImage.Unload(dib); FreeImage.Unload(num8); return true; } public static bool ResizeWhite(string Filename, int Width, int Height, bool center) { int num5; int num6; uint dib = 0; uint num2 = 0; dib = FreeImage.Load(FIF.FIF_JPEG, Filename, 0); uint width = FreeImage.GetWidth(dib); uint height = FreeImage.GetHeight(dib); if ((Width == width) && (Height == height)) { FreeImage.Unload(dib); return false; } double num7 = ((double) width)/((double) height); double num8 = ((double) Width)/((double) Height); if (num8 < num7) { num5 = Width; num6 = (int) (((double) num5)/num7); } else { num6 = Height; num5 = (int) (num6*num7); } num2 = FreeImage.Allocate(Width, Height, 0x18, 0, 0, 0); FreeImage.Invert(num2); uint src = FreeImage.Rescale(dib, num5, num6, FI_FILTER.FILTER_CATMULLROM); if (center) { FreeImage.Paste(num2, src, (Width - num5)/2, (Height - num6)/2, 0x3e8); } else { FreeImage.Paste(num2, src, 0, Height - num6, 0x3e8); } if (num5 == 0x192) { FreeImage.Save(FIF.FIF_JPEG, num2, Filename, 0x55); } else { FreeImage.Save(FIF.FIF_JPEG, num2, Filename, 0x4b); } FreeImage.Unload(dib); FreeImage.Unload(num2); FreeImage.Unload(src); return true; } } }