| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Работа с классом Bitmap |
| Автор: Rusel 9.9.2007, 21:45 |
| Мне нужно запрограмировать алгоритмы обработки цифровых зобржений на примере Bitmap. Смысл в том чтобы открыть Bitmap, обработать его и вывести на экран. И у меня возникла проблема: я не могу програмно изменить яркость отдельно взятого пиксела. Подскажите если кто с этим сталкивался, как это сделать. |
| Автор: tdebugger 10.9.2007, 08:18 | ||
Вот таким нехитрым методом можно уменьшить яркость некотой области в два раза:
... ну а дальше подбором коеффициентов... |
| Автор: iad 10.9.2007, 14:28 |
| Можно юзать методы GetPixel и SetPixel объекта Bitmap . |
| Автор: Rusel 10.9.2007, 22:09 | ||
Есть небольшая проблема с SetPixel.... Bitmap с indexed pixel format не поддерживает SetPixel. А мне нужно обработать именно такие картинки |
| Автор: mr.DUDA 11.9.2007, 11:47 |
| Вариант - скопировать битмап в другой битмап (через Graphics.DrawImage и графиксом созданным из Graphics.FromImage), выполнить на "нормальном" битмапе GetPixel/SetPixel, скопировать обратно таким же способом. |
| Автор: Sergey_P 18.9.2007, 11:31 |
| у кого-нить есть пример, где описана обработка каждого пикселя на экране по сложным формулам то есть получил пиксель по координатам X, Y ..получил отдельно значения красного, зеленого, синего; потом обработал каждый пиксель и сохранил обратно |
| Автор: iad 18.9.2007, 13:08 | ||
Вот реализация стандартного алгоритма изменения яркости. Для других преобразований - аналогично, только идет другое заполнение TransTable. TransTable это массив значений в которой индексом является исходное значение цветовой составляющей, а значением по этому индексу - новое значение.При использовании TransTable достаточно расчитать только 3*256 значений, а не считать значение для каждого пикселя, что при сложных алгоритмах дает значительный прирост производительности
|
| Автор: Sergey_P 18.9.2007, 15:50 |
| сорри за непонятливость, а чего менять, чтобы яркость изменилась? и если можно пример с рисованием на picturebox |
| Автор: iad 18.9.2007, 18:13 |
| Sergey_P, Вам нужно срочно найти человека который умеет читать код написанный на С# или самому прочитать пару абзацев по данному языку |
| Автор: Sergey_P 18.9.2007, 18:21 |
| весь мой опыт в 7 дельфи, и вот мне срочно надо написать рабочее приложение на C#, а 2 недели назад я первый раз запустил студию в общем могу и поразбираться, только пока не до этого ...спасибо за совет |
| Автор: iad 18.9.2007, 18:50 |
| А какая разница? Все ОО языки одного уровня - одинаковы. void SetBrightness( int offset) - метод меняющий яркость битмапа, offset - значение в байтах, на которое нужно поменять яркость |
| Автор: Sergey_P 18.9.2007, 23:08 | ||
может это только у меня, когда осн процедура
яркость исходная, пример работает а если добавить перед либо после SetBrightness(100); (пробовал и так и так, хотя как я понял верно именно до рисования графики в e.Graphics.DrawImage) то приложение задумывается и не прорисовается картинка, либо без изменений в яркости(если после изм графику) ...хотя приложение в любом случае задумывается просто мне хочется запустить пример и посмотреть на рабочем примере, а потом уже вникать.... |