Как мы можем использовать цветовую матрицу только часть изображения, а не целое изображение? - PullRequest
0 голосов
/ 03 августа 2009

Я знаю использование colormatrix. но эта работа на весь образ. Есть ли способ работать с colormatrix только часть изображения, а не целое изображение.

например, я хочу дать яркость только границы области изображения.

Я работаю с C #.

Ответы [ 2 ]

0 голосов
/ 30 августа 2011

если:

  • bitmap1 - это ваше исходное растровое изображение,
  • bitmap2 - это новое растровое изображение,
  • новый прямоугольник (100, 50, 20, 20) - это прямоугольник, который вы хотите изменить быть сделано,
  • yourImageAtributes является объектом ImageAttributes (надеюсь, вы знаете, как это использовать):
Bitmap bitmap2 = new Bitmap(bitmap1.Width, bitmap1.Height); 

//copy bitmap1 to bitmap2  
Graphics.FromImage(bitmap2).DrawImage(bitmap1, 0, 0);

//copy part of bitmap1 to bitmap2 with your own image attributes (ColorMatrix, etc..) 
Graphics.FromImage(bitmap2).DrawImage(bitmap1, new Rectangle(100, 50, 20, 20), 100, 50, 20, 20, GraphicsUnit.Pixel, yourImageAttributes);

Если вам нужна только рамка, вы можете сначала изменить изображение целиком, а затем скопировать прямоугольник исходного изображения внутрь.

0 голосов
/ 22 июня 2010

Учитывая, что ColorMatrix работает только с отдельными цветными векторами / пикселями, «все», что вам нужно сделать, это тщательно выбирать пиксели, чтобы они соответствовали вашим критериям.

Это было какое-то время, но если вы сканируете пиксели построчно, тогда все первые и последние n строк, а также первый и последний n столбцов всех остальных строк могут быть преобразованы.

...