|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.09.2012, 17:51 | #1 |
Форумчанин
Регистрация: 04.07.2007
Сообщений: 260
|
Преобразование рисунка в массив
Здравствуйте форумчане!
Задача для DELPHI 7 следующая: Есть изображение в градациях серого... Необходимо поместить его в двумерный массив типа IMG[x,y] : INTEGER; где Х - ширина изображения, Y - высота, а IMG - Оттенок (от 0 до 255); вот такая вот задачка...
Хорошо не там, где нас нет, а там, где нас еще небыло!!!
|
07.09.2012, 18:43 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
А зачем? Рисунок и так после загрузки представляет из себя массив.
I'm learning to live...
|
07.09.2012, 18:45 | #3 |
Форумчанин
Регистрация: 04.07.2007
Сообщений: 260
|
думаю надо делать примерно так:
Код:
я вообще в ту сторону двигаюсь.... только вот я получу непонятно что вместо оттенка в десятичном виде от 0-255...
Хорошо не там, где нас нет, а там, где нас еще небыло!!!
Последний раз редактировалось Stilet; 07.09.2012 в 20:32. |
07.09.2012, 19:40 | #4 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,341
|
Это ответ, который является правильным. Мы конечно не знаем, какие "тараканы в голове" у вас, так что...
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
07.09.2012, 19:43 | #5 |
Форумчанин
Регистрация: 13.12.2007
Сообщений: 788
|
IMAGE.Canvas.pixels[i,j] - тут у вас hex представление цвета пикселя, например
3f3f3f (если там действительно градации серого) По сути - вам нужен отсюда только один байт, так что смело берите остаток этого цвета от деления на 256 - получите желаемое
благодарность - сюда (не забываем писать от кого)
|
07.09.2012, 19:54 | #6 |
Форумчанин
Регистрация: 04.07.2007
Сообщений: 260
|
Ну спасибище вам ребятушки! проще говоря можно массив не создавать, а вычислять цвет на ходу...
примерно так: for i:=0 to IMAGE.PICTURE.WIDTH do begin for j:=1 to IMAGE.PICTURE.HEIGHT do begin [оттенок] : = round(strtoint(IMAGE.CANVAS.PIXELS[i,j])/256); end; end; ссори накосячил: не IMAGE.CANVAS.PIXELS[i,j])/256, а [оттенок] : = strtoint(IMAGE.CANVAS.PIXELS[i,j]) mod 256; попробую теперь ъто дело в Delphi отладить....
Хорошо не там, где нас нет, а там, где нас еще небыло!!!
Последний раз редактировалось Stilet; 07.09.2012 в 20:36. |
07.09.2012, 20:08 | #8 |
Форумчанин
Регистрация: 04.07.2007
Сообщений: 260
|
хммм... шчя усё проверим...
и правда... видимо Delphi сама переводит в СС делителя... - нашим легче!!! Код:
Хорошо не там, где нас нет, а там, где нас еще небыло!!!
Последний раз редактировалось Stilet; 07.09.2012 в 20:40. |
07.09.2012, 21:53 | #9 |
Форумчанин
Регистрация: 13.12.2007
Сообщений: 788
|
Ну тут дело даже не в переводе. TColor - суть целое число, просто в модулях границы обозначены в HEX представлении
Даже в своем коде можно переменным целочисленным присваивать hex значения, например Код:
благодарность - сюда (не забываем писать от кого)
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Преобразование числа в массив (Delphi) | Начинающий програм | Помощь студентам | 4 | 27.01.2012 20:02 |
Преобразование 3-х мерного в 2-х мерный массив. | Corvette | Общие вопросы C/C++ | 2 | 28.08.2011 21:10 |
Преобразование текстового файла в массив | DarkSwan | Общие вопросы C/C++ | 2 | 14.10.2010 17:01 |
Массив и его преобразование | svitlik | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 19.06.2009 14:56 |