IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Информация о пикселах графических файлов
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 98
Пол: Мужской
Реальное имя: Andriy

Репутация: -  0  +


Есть следующая задача - открыть небольшой графический файл (64*64) и записать массив массивов цветов этих точек. Вторая часть ясна, но как прочитать информацию о пикселе?
Читал эту тему, без описания модулей трудно понять.
Возможна реализация на Дельфи. wink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


Цитата
Возможна реализация на Дельфи.

что-то типа такого?
var pic:TBitmap;
begin
pic:=TBitMap.Create;
pic.LoadFromFile('имя_файла_с_картинкой');
mas[x,y]:=pic.Canvas.Pixels[x,y];
end;



Сообщение отредактировано: мисс_граффити -


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Цитата
но как прочитать информацию о пикселе


GetPixel(x, y: Integer): Word; // вернет цвет


Это для Pascal'я


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Пионер
**

Группа: Пользователи
Сообщений: 98
Пол: Мужской
Реальное имя: Andriy

Репутация: -  0  +


Большое спасибо... Но я с этим в первый раз на Дельфи сталкиваюсь, возник ламерский вопрос - как собственно открыть графический файл (чтобы появилось окно проводника)? Буду очень рад ссылке на FAQ по этой теме. wink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Вожак стада
***

Группа: Пользователи
Сообщений: 179
Пол: Мужской
Реальное имя: кирилл

Репутация: -  1  +


Ставиш компонент OpenPictureDialog и лезеш в help


--------------------
Админ наш,
Иже еси на серверах!
Да святится имя Твое,
Да приидет Unix Твой,
Да будет воля Твоя,
Как на земле , так и на небе.
Пинг наш насущный дай нам на сей день;
И прости нам счета наши, как и мы оставляем их должникам нашим;
И не введи нас во искушение виндовое,
Но избавь нас от лукавого Билли.
И да пребудет с нами сила твоя великая,
Во имя Отца-админа, Сына-Пингвина, и духа мастдайного. Админь!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Пионер
**

Группа: Пользователи
Сообщений: 98
Пол: Мужской
Реальное имя: Andriy

Репутация: -  0  +


Почти со всем разобрался, спасибо за помощь.
Возникла следующая проблема:
загружаю графический файл, он появляется на экране, после нажатия кнопки с кодом:
  pic:=TBitMap.Create;
pic.LoadFromFile(Fname);
Color:=pic.Canvas.Pixels[1,1];
Edit1.Text:=
inttohex(GetRValue(Color),2) +
inttohex(GetGValue(Color),2) +
inttohex(GetBValue(Color),2) ;

В Edit1.Text все супер, но фон окна становится таким же, какой и цвет пиксела. Почему? Как с этим справится?
Уже понял, что немного ошибся разделом форума. secret.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Цитата
Почему? Как с этим справится?
Почему? Потому, что под Color здесь имеется в виду TForm.Color (наведи мышь на слово Color, и ты увидишь это).

Как справиться? Вводить доп. переменную, например, myColor: TColor, и делать:

...
myColor:=pic.Canvas.Pixels[1,1];
Edit1.Text:=
inttohex(GetRValue(myColor),2) +
inttohex(GetGValue(myColor),2) +
inttohex(GetBValue(myColor),2) ;
...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






volvo , большое спасибо. (Хотя не совсем понятно,почему локальная переменная имеет желаемое действие в отличии от глобальной) wink.gif
Ещё один вопрос - почему операцией открытия графических файлов не удается открыть .jpeg файлы? Код кнопки:
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute then
begin
FName := OpenPictureDialog1.FileName;
Image1.Picture.LoadFromFile(FName);
end;
end;

Фильтр:
Код
(*.jpg;*.jpeg;*.bmp;*.ico;*.emf;*.wmf)
rolleyes.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Цитата
Хотя не совсем понятно,почему локальная переменная имеет желаемое действие в отличии от глобальной
Рассказываю: То, что использовал ты - это НЕ глобальная переменная, а property (свойство) класса TForm, которое как раз и отвечает за то, что изменяет цвет формы (даже если у тебя и описана где-то глобальная переменная с тем же именем, преимущество здесь будет иметь именно property, и именно с ним осуществляется работа). Как ты думаешь, что будет, если задать этому свойству какой-то цвет? А ничего, кроме того, что должно быть: цвет формы изменится. Что ты и наблюдал. А локальная переменная избавляет тебя от подобного поведения...

А чтобы открывать Jpeg файлы, надо подключить модуль Jpeg в Uses...
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 21.09.2020 20:56
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name