Beispiel #1
0
        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);
        }