![]() |
Изображение в коде
Каким способом изображение хранится в машинном коде, ну или в 16ричном. Например есть изображение 2х2 пикселя, я открывая НЕХ редактором, и если от панта изменить, открываю вижу что фото или вобще поменялось цвета, а не один пиксель, вобщем вопрос в том, что же и как хранится. Наверное Дата создания, имя. Но код прописан не на каждый цвет пикселя, таки ли это?
|
xNiSSaNx, изображение хранится не в «машинном коде», и не в «16ричном», а в своём формате: Графические форматы — Википедия. Определяйтесь с конкретным форматом Вашего изображения и затем отсюда «танцуйте».
Есть представление изображения при их использовании приложением, например IPicture interface. |
Так оно же в НЕХ редакторе открывается. Например .рng
|
Оно и в блокноте отрывается, вы лучше прочитайте про графические форматы
|
В ФАЙЛЕ ХРАНИТСЯ КАЖДЫЙ ПИКСЕЛЬ. Как хранится, указывается в заголовке формата.
Если изображение 2x2 на 2 пикселя, то в формате BMP один пиксель будет занимать 4 байта. то есть последовательность 00 00 00 00, по другому называемая DWORD-ом или int-ом или long-ом, где 1 байт это R (red, красный) компонента цвета, 1 байт это G ( green, зеленый) компонента цвета, 1 байт это B ( blue, синяя) компонента цвета. Остаток - нули для выравнивания по определенному размеру, который сможет понять программа, считывающая файл. Каждый пиксель должен хранится в определенном формате, иначе программа не сможет считать файл правильно. Хранится в битах. Бит принимает значение либо 0, либо 1. Из-за железа компьютера, которое работает на основе двоичной (булевой) логики. 8 бит составляют 1 байт. Набор из 8 битов может принимать значения от 00 до ff шестнадцатеричных. Например, 11111111 это FF при просмотре в 16-ричном редакторе. FF в десятичной системе это 255. Программа записывает и считывает файл побайтово. В начале файла находится заголовок с описанием формата и различных характеристик файла. Затем непосредственно набор структур, описывающих изображение. Если изображение 2 на 2 пикселя то формат файла это заголовок + набор данных о пикселах. Анализ структуры: Например, заголовок BMP Код:
typedef struct tagBITMAPFILEHEADER В шеснадцатеричном виде BYTE это 8 бит, WORD это 16 бит, DWORD это 32 бита. Структура при записи в файл примет вид: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 где вместо нулей - шестнадцатеричные цифры, которые принимают набор предопределенных программой значений. Я написал, но сомневаюсь, что без дополнительных вопросов и объяснения, у автора темы будет понимание. *** Прочитать легко - понять гораздо сложнее, очень трудно. Непонятное обычно пропускается. И чтение без понимания википедии или другого сайта ничего не даст. Лучше бы пытались объяснить своими словами и попроще не программисту. Ссылки на другие сайты без попыток объяснить своими словами так чтобы человек понял, бесполезны. Человек без опыта и подготовки статью о BMP в википедии не поймет, так как понятие DWORD или WORD ему ничего не даст, они являются неизвестными. неизвестность рождает непонимание, непонимание не дает сделать то, что надо. Советы почитать - абсолютно БЕСПОЛЕЗНЫ!!! Нужно объяснять, когда человек спрашивает а не отправлять в гугл, на википедию или на другие сайты. Человек останется в своем одиночестве и ничего не поймет, на форум приходят, чтобы люди отвечали по-людски, а не для того, чтобы их отправляли читать википедию или другие сайты, оставляя однострочные комментарии или приколы. На форуме не камеди клаб. |
Цитата:
Вот, что мы здесь наблюдаем в первом посте? Незнание тех самых базовых понятий, которые порождают попросту бессмысленную постановку вопроса, на который невозможно дать конкретный ответ как раз по причине его бессмысленности. Это давно известный случай — «Чтобы получить правильный ответ — нужно задать правильный вопрос. Чтобы задать правильный вопрос — нужно знать большую часть ответа.» Плюс ко всему, автор задаёт не конкретный вопрос, а общего характера, без каких-либо деталей. Потому главная задача — задать ему направление, где бы он мог обозреть всю картину в целом, освоиться в данной предметной области, получить тот самый базовый набор знаний, который поможет ему мало-мальски начать ориентироваться и начать задавать правильные вопросы. Цитата:
Цитата:
|
Цитата:
|
Amigos, именно. И ещё целая куча всяческих тонкостей. И потому мне не очень понятны предубеждения коллеги mrcnn против «почитать учебники».
|
Цитата:
Однако есть одна проблема: выверенные слова специалистов из учебников и статей очень наукообразные и для понимания нужно объяснять попроще, искать какие-нибудь простые аналогии из разных областей жизни ( из других предметных областей), чтобы объяснение было более доступным. Человек может читать книгу и не понять ее в итоге по причине наукообразности. На форуме же могут объяснить доступно и в этом как мне кажется и есть задача ответов на форуме, где нельзя отсылать по разным местам Я занимаюсь программированием как хобби примерно 10-11 лет. И простую вещь, что В ФАЙЛЫ ЗАПИСЫАЮТСЯ (например, функцией fwrite языка С) СТРУКТУРЫ (типы данных объявляемые как struct или class в языке C)и СЧИТЫВАТЬ НАДО ТОЖЕ СТРУКТУРЫ (например, функцией fread языка С) я понял лишь на 10-11 году, то есть в этом году, и я постарался на это указать в своем ответе в этом теме. Помимо этого простую вещь, что накладывать на экран, можно область текстуры а не всю текстуру я тоже понял лишь на 10-11 году. Разница между пониманием у новичка, что текстура полностью накладывается и пониманием у специалиста про наложение области существенная. Это подразумевающиеся в статьях, книгах и учебниках вещь и их надо объяснять отдельно, иначе будет непонимание. Новичку надо указывать путь, последовательность важных тем, потому что новичок не сможет выделить главное и второстепенное. И потонет во множестве мелких деталей, а цельной картины мира не будет. Задача обучения и вопросов - составление цельной картины мира, где разные части взаимосвязаны друг с другом. Одна предметная область зависит от другой, то есть все системно взаимосвязано друг с другом. Нужно указывать прямо зачем нужны битовые операции, как работает компьютер, причем не наукообразным языком. 0 в программировании значит, что электрического тока в электрической цепи нет. А 1 значит, что электрический ток в цепи есть. И микропроцессор занимается преобразованием токов внутри самого себя и этим осуществляет арифметические и логические операции. Связь по слотам между устройствами это тоже передача тока по определенному каналам - это простая вещь, но в книгах по прогарммированию не объясняют. Правильные вопросы у новичка возникают после попыток объяснения. Без попыток объяснения не будет даже самих вопросов - будет просто незнание и непонимание. Человек займется совсем другим делом, а на то, с чем хотел разобраться, забьет, то есть бросит. Нужно ввести и пояснить термины, без них новичок просто бросит, то есть даже не задаст вопросы совсем. |
mrcnn все понятно объяснил. Спасибо!
|
Время: 15:40. |
Время: 15:40.
© OSzone.net 2001-