public static Bitmap ApplyImageModificationsToOriginal(Bitmap bitmap, List <ImageMod> mods) { if (bitmap == null) { throw new ArgumentNullException(nameof(bitmap)); } if (mods == null) { throw new ArgumentNullException(nameof(mods)); } Bitmap result = new Bitmap(bitmap); foreach (var mod in mods) { // TODO: This is a little awkward ImageModType modType; int val1, val2, val3, val4; mod.Get(out modType, out val1, out val2, out val3, out val4); switch (mod.Op) { case ImageModType.IMG_flip: result.RotateFlip(RotateFlipType.RotateNoneFlipX); break; case ImageModType.IMG_rotate90cw: result.RotateFlip(RotateFlipType.Rotate90FlipNone); break; case ImageModType.IMG_rotate90ccw: result.RotateFlip(RotateFlipType.Rotate270FlipNone); break; case ImageModType.IMG_brighten: result = result.AlterBrightness(val1); break; case ImageModType.IMG_contrast: result = result.EnhanceContrastMinMax((byte)val1, (byte)val2); break; case ImageModType.IMG_contrast2: result = result.EnhanceContrast(val1); break; case ImageModType.IMG_crop: var cropRect = new System.Drawing.Rectangle(val1, val2, val3 - val1, val4 - val2); result = ImageTransform.CropBitmap(result, cropRect); break; default: throw new NotImplementedException(); } } return(result); }