Exemplo n.º 1
0
        public override Bitmap Perform(Bitmap bitmap)
        {
            int bytesPerPixel;

            if (bitmap.PixelFormat == PixelFormat.Format24bppRgb)
            {
                bytesPerPixel = 3;
            }
            else if (bitmap.PixelFormat == PixelFormat.Format32bppArgb)
            {
                bytesPerPixel = 4;
            }
            else
            {
                // No need to handle 1bpp since hue shifts are null transforms
                return(bitmap);
            }

            float hueShiftAdjusted = HueShift / 2000f * 360;

            if (hueShiftAdjusted < 0)
            {
                hueShiftAdjusted += 360;
            }

            UnsafeImageOps.HueShift(bitmap, bytesPerPixel, hueShiftAdjusted);

            return(bitmap);
        }
Exemplo n.º 2
0
        public override Bitmap Perform(Bitmap bitmap)
        {
            var brightnessAdjusted = Brightness / 1000f;

            EnsurePixelFormat(ref bitmap);
            UnsafeImageOps.ChangeBrightness(bitmap, brightnessAdjusted);
            return(bitmap);
        }
Exemplo n.º 3
0
 public override Bitmap Perform(Bitmap bitmap)
 {
     EnsurePixelFormat(ref bitmap);
     UnsafeImageOps.StretchHistogram(bitmap,
                                     (byte)Parameters.RedMin, (byte)Parameters.RedMax,
                                     (byte)Parameters.GreenMin, (byte)Parameters.GreenMax,
                                     (byte)Parameters.BlueMin, (byte)Parameters.BlueMax);
     return(bitmap);
 }
        public override Bitmap Perform(Bitmap bitmap)
        {
            // convert +/-1000 input range to a logarithmic scaled multiplier
            var contrastAdjusted = (float)Math.Pow(2.718281f, Contrast / 500.0f);
            // see http://docs.rainmeter.net/tips/colormatrix-guide/ for offset & matrix calculation
            var offset = (1.0f - contrastAdjusted) / 2.0f;

            EnsurePixelFormat(ref bitmap);
            UnsafeImageOps.ChangeContrast(bitmap, contrastAdjusted, offset);
            return(bitmap);
        }
Exemplo n.º 5
0
        public override Bitmap Perform(Bitmap bitmap)
        {
            if (bitmap.PixelFormat != PixelFormat.Format24bppRgb && bitmap.PixelFormat != PixelFormat.Format32bppArgb)
            {
                return(bitmap);
            }

            var monoBitmap = UnsafeImageOps.ConvertTo1Bpp(bitmap, Threshold);

            bitmap.Dispose();

            return(monoBitmap);
        }
Exemplo n.º 6
0
        public override Bitmap Perform(Bitmap bitmap)
        {
            if (bitmap.PixelFormat != PixelFormat.Format24bppRgb && bitmap.PixelFormat != PixelFormat.Format32bppArgb)
            {
                return(bitmap);
            }

            var grayscaleBitmap = UnsafeImageOps.ConvertToGrayscale(bitmap, RedWeighting, GreenWeighting, BlueWeighting);

            bitmap.Dispose();

            return(grayscaleBitmap);
        }
Exemplo n.º 7
0
        public override Bitmap Perform(Bitmap bitmap)
        {
            if (bitmap.PixelFormat != PixelFormat.Format24bppRgb && bitmap.PixelFormat != PixelFormat.Format32bppArgb)
            {
                // No need to handle 1bpp since hue shifts are null transforms
                return(bitmap);
            }

            var hueShiftAdjusted = HueShift / 2000f * 360;

            if (hueShiftAdjusted < 0)
            {
                hueShiftAdjusted += 360;
            }

            UnsafeImageOps.HueShift(bitmap, hueShiftAdjusted);

            return(bitmap);
        }
Exemplo n.º 8
0
        public override Bitmap Perform(Bitmap bitmap)
        {
            double xScale = bitmap.Width / (double)(OriginalWidth ?? bitmap.Width),
                   yScale = bitmap.Height / (double)(OriginalHeight ?? bitmap.Height);

            int x      = ((int)Math.Round(Left * xScale)).Clamp(0, bitmap.Width - 1);
            int y      = ((int)Math.Round(Top * yScale)).Clamp(0, bitmap.Height - 1);
            int width  = (bitmap.Width - (int)Math.Round((Left + Right) * xScale)).Clamp(1, bitmap.Width - x);
            int height = (bitmap.Height - (int)Math.Round((Top + Bottom) * yScale)).Clamp(1, bitmap.Height - y);

            var result = new Bitmap(width, height, bitmap.PixelFormat);

            result.SafeSetResolution(bitmap.HorizontalResolution, bitmap.VerticalResolution);
            if (bitmap.PixelFormat == PixelFormat.Format1bppIndexed)
            {
                result.Palette.Entries[0] = bitmap.Palette.Entries[0];
                result.Palette.Entries[1] = bitmap.Palette.Entries[1];
            }
            UnsafeImageOps.RowWiseCopy(bitmap, result, x, y, width, height);
            bitmap.Dispose();
            return(result);
        }