Вопрос

Есть ли простой способ программно раскрасить изображения в .NET?По сути, у нас есть черно-белое изображение, и нам нужно поместить над ним слой, скажем, розового цвета, и уменьшить непрозрачность этого слоя, чтобы изображение было раскрашено в розовый цвет.

Это было полезно?

Решение

Вам следует воспользоваться замечательным ИзображениеМагия библиотека.У него есть привязки .NET, так что проблем нет.

Веселиться!:)

Другие советы

На ум приходит способ использования пакетов рисования для рисования прямоугольника поверх изображения заданным цветом (вы можете установить альфа).Это не очень эффективно, но при наличии кэширования не принесет никакого вреда даже на загруженном сервере.

Это слишком необычно для метода .net framework.Если вы не можете найти единственное решение для вызова метода..Я публикую то, на что можно посмотреть.

Если у вас есть WPF, вы можете загрузить изображение в элемент управления.Поместите поверх него еще один элемент управления (Прямоугольник с розовой заливкой и прозрачностью).(Используйте что -то вроде сетки для макета, чтобы оба они идеально перекрывались) Далее вы могли бы

RenderTargetBitmap bmp = new RenderTargetBitmap( imageWidth,imageHeight, 
  DPIHoriz, DPIVert, 
  PixelFormats.Pbrga32);
 // if you don't want to make the controls 'visible' on screen, you need to trigger size calculations explicitly. 
grid.Measure(new Size(imageWidth, imageHeight));
grid.Arrange(new Rect(0,0, imageWidth, imageHeight);
bmp.Render(grid);

Таким образом, вы получаете все, что видите на экране, записанное в растровое изображение в памяти.Тогда вы могли бы сохранить его.Если это не сработает, вы можете перейти к управлению уровнем пикселей с помощью класса WriteableBitmap и выполнить байтовую работу.

Я думаю, это будет немного сложнее, если вы захотите раскрасить изображение, а не просто наложить полупрозрачный слой поверх него.Если вы хотите получить тот же эффект, что и режим слоя «экран» в PhotoShop, вам придется заменить все оттенки черного на изображении оттенками нового цвета, чтобы белые части оставались белыми.

Это определенно можно сделать в .NET, но я полагаю, что не помешало бы заглянуть в какую-нибудь библиотеку.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top