Как мы можем использовать цветовую матрицу только часть изображения, а не целое изображение?
Я знаю использование colormatrix. но эта работа на весь образ. Есть ли способ работать с colormatrix только часть изображения, а не целое изображение.
например, я хочу дать яркость только границы области изображения.
Я работаю с C#.
2 ответа
Если:
- bitmap1 - это ваше оригинальное растровое изображение,
- bitmap2 - это новое растровое изображение,
- новый прямоугольник (100, 50, 20, 20) - это прямоугольник, в который вы хотите внести изменения,
- yourImageAtributes является объектом ImageAttributes (надеюсь, вы знаете, как его использовать):
Bitmap bitmap2 = новое растровое изображение (bitmap1.Width, bitmap1.Height); // копировать bitmap1 в bitmap2 Graphics.FromImage(bitmap2).DrawImage(bitmap1, 0, 0); // копировать часть bitmap1 в bitmap2 с вашими собственными атрибутами изображения (ColorMatrix и т. д.) Graphics.FromImage(bitmap2).DrawImage(bitmap1, новый прямоугольник (100, 50, 20, 20), 100, 50, 20, 20, GraphicsUnit.Pixel, yourImageAttributes);
Если вам нужна только рамка, вы можете сначала изменить изображение целиком, а затем скопировать прямоугольник оригинального изображения внутрь.
Учитывая, что ColorMatrix
работает только для отдельных цветовых векторов / пикселей, "все", что вам нужно сделать, это тщательно выбирать пиксели, чтобы они соответствовали вашим критериям.
Это было какое-то время, но если вы сканируете пиксели построчно, тогда все первые и последние n строк, а также первый и последний n столбцов всех остальных строк могут быть преобразованы.