public Bitmap changeRed(int valueRed, int xPoint, int yPoint, int areaWidth, int areaHeight) { BitmapLockManager originalImg = new BitmapLockManager(imagesSet.original); BitmapLockManager currentImg = new BitmapLockManager(imagesSet.current); originalImg.LockBits(); //Открываем оригинальное изображение, чтобы взять оттуда изменяемый цвет currentImg.LockBits(); for (int i = xPoint; i < xPoint + areaWidth; i++) { for (int j = yPoint; j < yPoint + areaHeight; j++) { if (i < originalImg.Width && i >= 0 && j < originalImg.Height && j >= 0) { int red = originalImg.GetPixel(i, j).R + valueRed; int green = currentImg.GetPixel(i, j).G; int blue = currentImg.GetPixel(i, j).B; int opacity = currentImg.GetPixel(i, j).A; if (red > 255) red = 255; if (red < 1) red = 0; currentImg.SetPixel(i, j, Color.FromArgb(opacity, red, green, blue)); } } } originalImg.UnlockBits(); currentImg.UnlockBits(); imagesSet.current = currentImg.GetImage(); //Тут получаем обработанное изображение с класса BitmapLockManager imagesSet.ToCurrent(); //Приравнием все остальные изображения к текущему return imagesSet.current; }
public void imageToMatrix() { BitmapLockManager originalImg = new BitmapLockManager(mainImage); originalImg.LockBits(); //Открываем оригинальное изображение, чтобы взять оттуда изменяемый for (int i = 0; i < mainImage.Width; i++) for (int j = 0; j < mainImage.Height; j++) { Color pixelColor = originalImg.GetPixel(i, j); int red = pixelColor.R; int green = pixelColor.G; int blue = pixelColor.B; imagePixelColor[i,j] = new PixelColor(red, green, blue); } originalImg.UnlockBits(); }
public Bitmap MedFilter(Bitmap bmp, int sz) { Bitmap res = new Bitmap(bmp.Width, bmp.Height); if (sz > 2) { if (sz % 2 == 0) sz -= 1; BitmapLockManager original = new BitmapLockManager(bmp); BitmapLockManager current = new BitmapLockManager(res); original.LockBits(); current.LockBits(); int wd = res.Width, ht = res.Height; List<Pair1> l = new List<Pair1>(); for (int xx = 0; xx < wd - sz; ++xx) { for (int yy = 0; yy < ht - sz; ++yy) { for (int x = xx; (x < xx + sz && x < wd); ++x) { for (int y = yy; (y < yy + sz && y < ht); ++y) { Color pixel = original.GetPixel(x, y); Px p = new Px(pixel.B, pixel.G, pixel.R); l.Add(new Pair1(p.val(), p)); } } sort(l, 0, l.Count - 1); Px av = l[l.Count / 2].s; l.Clear(); for (int x = xx; x < xx + sz && x < wd; ++x) for (int y = yy; y < yy + sz && y < ht; ++y) current.SetPixel(x, y, Color.FromArgb(av.r, av.g, av.b)); } } original.UnlockBits(); current.UnlockBits(); return current.GetImage(); } return bmp; }
public Bitmap makeMonochrome(int xPoint, int yPoint, int areaWidth, int areaHeight) { BitmapLockManager currentImg = new BitmapLockManager(imagesSet.current); currentImg.LockBits(); for (int i = xPoint; i < areaWidth + xPoint; i++) { for (int j = yPoint; j < areaHeight + yPoint; j++) { if (i < currentImg.Width && i >= 0 && j < currentImg.Height && j >= 0) { int red = currentImg.GetPixel(i, j).R; int blue = currentImg.GetPixel(i, j).B; int green = currentImg.GetPixel(i, j).G; if((red+green+blue)/3 >= 128) currentImg.SetPixel(i, j, Color.FromArgb(0, 0, 0)); else currentImg.SetPixel(i, j, Color.FromArgb(255, 255, 255)); } } } currentImg.UnlockBits(); imagesSet.current = currentImg.GetImage(); //Тут получаем обработанное изображение с класса BitmapLockManager imagesSet.ToCurrent(); //Приравнием все остальные изображения к текущему return imagesSet.current; }
public Bitmap makeBlackAndWhiteScroll(double bwValue, int xPoint, int yPoint, int areaWidth, int areaHeight) { BitmapLockManager originalImg = new BitmapLockManager(imagesSet.forBW); BitmapLockManager currentImg = new BitmapLockManager(imagesSet.current); originalImg.LockBits(); //Открываем оригинальное изображение, чтобы взять оттуда изменяемый цвет currentImg.LockBits(); if (bwValue < 1) bwValue = 1; if (bwValue > 100) bwValue = 100; double m = bwValue / 100; for (int i = xPoint; i < xPoint + areaWidth; i++) { for (int j = yPoint; j < yPoint + areaHeight; j++) { if (i < originalImg.Width && i >= 0 && j < originalImg.Height && j >= 0) { Color c = originalImg.GetPixel(i, j); int averageColorValue = (c.B + c.G + c.R) / 3; int n1 = (int)((c.B - averageColorValue) * m); int n2 = (int)((c.G - averageColorValue) * m); int n3 = (int)((c.R - averageColorValue) * m); currentImg.SetPixel(i, j, Color.FromArgb(c.R - n3, c.G - n2, c.B - n1)); } } } originalImg.UnlockBits(); currentImg.UnlockBits(); imagesSet.current = currentImg.GetImage(); //Тут получаем обработанное изображение с класса BitmapLockManager imagesSet.toCurrentExeptBw(); //Приравнием все остальные изображения к текущему return imagesSet.current; }
//For BUTTON /*public Bitmap makeBlackAndWhite(int xPoint, int yPoint, int areaWidth, int areaHeight) { BitmapLockManager originalImg = new BitmapLockManager(imagesSet.forBW); BitmapLockManager currentImg = new BitmapLockManager(imagesSet.current); originalImg.LockBits(); //Открываем оригинальное изображение, чтобы взять оттуда изменяемый цвет currentImg.LockBits(); for (int i = xPoint; i < xPoint + areaWidth; i++) { for (int j = yPoint; j < yPoint + areaHeight; j++) { if (i < originalImg.Width && j < originalImg.Height && i > 0 && j > 0) { int red = currentImg.GetPixel(i, j).R; int blue = currentImg.GetPixel(i, j).B; int green = currentImg.GetPixel(i, j).G; int average = (green + blue + red) / 3; currentImg.SetPixel(i, j, Color.FromArgb(average, average, average)); } } } originalImg.UnlockBits(); currentImg.UnlockBits(); imagesSet.current = currentImg.GetImage(); //Тут получаем обработанное изображение с класса BitmapLockManager imagesSet.toCurrentExeptBw(); //Приравнием все остальные изображения к текущему return imagesSet.current; }*/ public Bitmap Inverse(int xPoint, int yPoint, int areaWidth, int areaHeight) { BitmapLockManager originalImg = new BitmapLockManager(imagesSet.forInverse); BitmapLockManager currentImg = new BitmapLockManager(imagesSet.current); originalImg.LockBits(); //Открываем оригинальное изображение, чтобы взять оттуда изменяемый цвет currentImg.LockBits(); for (int i = xPoint; i < areaWidth + xPoint; i++) { for (int j = yPoint; j < areaHeight + yPoint; j++) { if (i < originalImg.Width && i >= 0 && j < originalImg.Height && j >= 0) { int red = 255 - currentImg.GetPixel(i, j).R; int blue = 255 - currentImg.GetPixel(i, j).B; int green = 255 - currentImg.GetPixel(i, j).G; currentImg.SetPixel(i, j, Color.FromArgb(red, green, blue)); } } } originalImg.UnlockBits(); currentImg.UnlockBits(); imagesSet.current = currentImg.GetImage(); //Тут получаем обработанное изображение с класса BitmapLockManager imagesSet.toCurrentExeptInverse(); //Приравнием все остальные изображения к текущему return imagesSet.current; }
public Bitmap makeBlur(int valueBlurRadius, int areaWidth, int areaHeight) { if (valueBlurRadius < 1) { imagesSet.current = new Bitmap(imagesSet.forBlurFilter); imagesSet.toCurrentExeptBlur(); return imagesSet.current; } BitmapLockManager blurFilter = new BitmapLockManager(imagesSet.forBlurFilter); BitmapLockManager currentImg = new BitmapLockManager(imagesSet.current); blurFilter.LockBits(); //Открываем оригинальное изображение, чтобы взять оттуда изменяемый цвет currentImg.LockBits(); for (int i = 0; i < areaWidth; i+=2 ) { for (int j = 0; j < areaHeight; j+=2) { int red = 0; int green = 0; int blue = 0; int opacity = blurFilter.GetPixel(i, j).A; for (int i1 = i; i1 < i + valueBlurRadius; i1++) { for (int j1 = j; j1 < j + valueBlurRadius; j1++) { if (i1 < areaWidth && j1 < areaHeight) { red += blurFilter.GetPixel(i1, j1).R / valueBlurRadius; green += blurFilter.GetPixel(i1, j1).G / valueBlurRadius; blue += blurFilter.GetPixel(i1, j1).B / valueBlurRadius; } } } for (int i1 = i; i1 < i + valueBlurRadius; i1++) { for (int j1 = j; j1 < j + valueBlurRadius; j1++) { if (i1 < areaWidth && j1 < areaHeight) { currentImg.SetPixel(i1, j1, Color.FromArgb(opacity, red / valueBlurRadius, green / valueBlurRadius, blue / valueBlurRadius)); } } } } } blurFilter.UnlockBits(); currentImg.UnlockBits(); imagesSet.current = currentImg.GetImage(); //Тут получаем обработанное изображение с класса BitmapLockManager imagesSet.toCurrentExeptBlur(); return imagesSet.current; }
public Bitmap makePixelImage(int valuePixelRadius, int xPoint, int yPoint, int areaWidth, int areaHeight) { if (valuePixelRadius < 1) { imagesSet.current = new Bitmap(imagesSet.forPixelFilter); imagesSet.toCurrentExeptPixel(); return imagesSet.current; } BitmapLockManager pixelFilter = new BitmapLockManager(imagesSet.forPixelFilter); BitmapLockManager currentImg = new BitmapLockManager(imagesSet.current); pixelFilter.LockBits(); //Открываем оригинальное изображение, чтобы взять оттуда изменяемый цвет currentImg.LockBits(); for (int i = xPoint; i < areaWidth + xPoint; i += valuePixelRadius) { for (int j = yPoint; j < areaHeight + yPoint; j += valuePixelRadius) { int red = 0; int green = 0; int blue = 0; int opacity; int devider = 0; if (i < pixelFilter.Width && j < pixelFilter.Height && i > -1 && j>-1) opacity = pixelFilter.GetPixel(i, j).A; else opacity = 100; for (int i1 = i; i1 < i + valuePixelRadius; i1++) { for (int j1 = j; j1 < j + valuePixelRadius; j1++) { if (i1 < pixelFilter.Width && j1 < pixelFilter.Height && i1 >= 0 && j1 >= 0) { devider++; red += pixelFilter.GetPixel(i1, j1).R; green += pixelFilter.GetPixel(i1, j1).G; blue += pixelFilter.GetPixel(i1, j1).B; } } } for (int i1 = i; i1 < i + valuePixelRadius; i1++) { for (int j1 = j; j1 < j + valuePixelRadius; j1++) { if (i1 < pixelFilter.Width && j1 < pixelFilter.Height && i1 >= 0 && j1 >= 0) { currentImg.SetPixel(i1, j1, Color.FromArgb(opacity, red / devider, green / devider, blue / devider)); } } } } } pixelFilter.UnlockBits(); currentImg.UnlockBits(); imagesSet.current = currentImg.GetImage(); //Тут получаем обработанное изображение с класса BitmapLockManager //imagesSet.ToCurrent(imagesSet.forBlurFilter, imagesSet.forPixelFilter); //Приравнием все остальные изображения к текущему imagesSet.toCurrentExeptPixel(); return imagesSet.current; }
public Bitmap changeBrightness(int valueBright, int xPoint, int yPoint, int areaWidth, int areaHeight) { BitmapLockManager brightnessImg = new BitmapLockManager(imagesSet.forBrightness); BitmapLockManager currentImg = new BitmapLockManager(imagesSet.current); brightnessImg.LockBits(); //Открываем оригинальное изображение, чтобы взять оттуда изменяемый цвет currentImg.LockBits(); for (int i = xPoint; i < xPoint + areaWidth; i++) { for (int j = yPoint; j < yPoint + areaHeight; j++) { if (i < brightnessImg.Width && j < brightnessImg.Height && i >= 0 && j >= 0) { int red = brightnessImg.GetPixel(i, j).R + valueBright; int green = brightnessImg.GetPixel(i, j).G + valueBright; int blue = brightnessImg.GetPixel(i, j).B + valueBright; int opacity = brightnessImg.GetPixel(i, j).A; if (blue > 255) blue = 255; if (red > 255) red = 255; if (green > 255) green = 255; if (blue < 1) blue = 0; if (red < 1) red = 0; if (green < 1) green = 0; currentImg.SetPixel(i, j, Color.FromArgb(opacity, red, green, blue)); } } } brightnessImg.UnlockBits(); currentImg.UnlockBits(); imagesSet.current = currentImg.GetImage(); //Тут получаем обработанное изображение с класса BitmapLockManager //imagesSet.ToCurrent(imagesSet.forBlurFilter, imagesSet.forPixelFilter); //Приравнием все остальные изображения к текущему imagesSet.toCurrentExeptBrightness(); return imagesSet.current; }