![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Компьютеры + Интернет » Хочу все знать » [решено] Изображение в коде |
|
[решено] Изображение в коде
|
Старожил Сообщения: 160 |
Каким способом изображение хранится в машинном коде, ну или в 16ричном. Например есть изображение 2х2 пикселя, я открывая НЕХ редактором, и если от панта изменить, открываю вижу что фото или вобще поменялось цвета, а не один пиксель, вобщем вопрос в том, что же и как хранится. Наверное Дата создания, имя. Но код прописан не на каждый цвет пикселя, таки ли это?
|
|
Отправлено: 23:11, 17-04-2012 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать xNiSSaNx, изображение хранится не в «машинном коде», и не в «16ричном», а в своём формате: Графические форматы — Википедия. Определяйтесь с конкретным форматом Вашего изображения и затем отсюда «танцуйте».
Есть представление изображения при их использовании приложением, например IPicture interface. |
Отправлено: 23:29, 17-04-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 160
|
Профиль | Отправить PM | Цитировать Так оно же в НЕХ редакторе открывается. Например .рng
|
Отправлено: 13:22, 18-04-2012 | #3 |
Разный Сообщения: 1294
|
Профиль | Отправить PM | Цитировать Оно и в блокноте отрывается, вы лучше прочитайте про графические форматы
|
Отправлено: 14:02, 18-04-2012 | #4 |
Ветеран Сообщения: 1405
|
Профиль | Отправить PM | Цитировать В ФАЙЛЕ ХРАНИТСЯ КАЖДЫЙ ПИКСЕЛЬ. Как хранится, указывается в заголовке формата.
Если изображение 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 { WORD bfType; // смещение 0 от начала файла DWORD bfSize; // смещение 2 от начала файла, длина 4 WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; // смещение 10 от начала файла, длина 4 } BITMAPFILEHEADER, *PBITMAPFILEHEADER; В шеснадцатеричном виде BYTE это 8 бит, WORD это 16 бит, DWORD это 32 бита. Структура при записи в файл примет вид: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 где вместо нулей - шестнадцатеричные цифры, которые принимают набор предопределенных программой значений. Я написал, но сомневаюсь, что без дополнительных вопросов и объяснения, у автора темы будет понимание. *** Прочитать легко - понять гораздо сложнее, очень трудно. Непонятное обычно пропускается. И чтение без понимания википедии или другого сайта ничего не даст. Лучше бы пытались объяснить своими словами и попроще не программисту. Ссылки на другие сайты без попыток объяснить своими словами так чтобы человек понял, бесполезны. Человек без опыта и подготовки статью о BMP в википедии не поймет, так как понятие DWORD или WORD ему ничего не даст, они являются неизвестными. неизвестность рождает непонимание, непонимание не дает сделать то, что надо. Советы почитать - абсолютно БЕСПОЛЕЗНЫ!!! Нужно объяснять, когда человек спрашивает а не отправлять в гугл, на википедию или на другие сайты. Человек останется в своем одиночестве и ничего не поймет, на форум приходят, чтобы люди отвечали по-людски, а не для того, чтобы их отправляли читать википедию или другие сайты, оставляя однострочные комментарии или приколы. На форуме не камеди клаб. |
|
------- Отправлено: 15:16, 18-04-2012 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата mrcnn:
Вот, что мы здесь наблюдаем в первом посте? Незнание тех самых базовых понятий, которые порождают попросту бессмысленную постановку вопроса, на который невозможно дать конкретный ответ как раз по причине его бессмысленности. Это давно известный случай — «Чтобы получить правильный ответ — нужно задать правильный вопрос. Чтобы задать правильный вопрос — нужно знать большую часть ответа.» Плюс ко всему, автор задаёт не конкретный вопрос, а общего характера, без каких-либо деталей. Потому главная задача — задать ему направление, где бы он мог обозреть всю картину в целом, освоиться в данной предметной области, получить тот самый базовый набор знаний, который поможет ему мало-мальски начать ориентироваться и начать задавать правильные вопросы. Цитата mrcnn:
Цитата mrcnn:
|
|||
Отправлено: 16:13, 18-04-2012 | #6 |
Всем до свидания! Сообщения: 8314
|
Профиль | Отправить PM | Цитировать Цитата Iska:
|
|
Отправлено: 19:44, 18-04-2012 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Amigos, именно. И ещё целая куча всяческих тонкостей. И потому мне не очень понятны предубеждения коллеги mrcnn против «почитать учебники».
|
Отправлено: 22:38, 18-04-2012 | #8 |
Ветеран Сообщения: 1405
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Однако есть одна проблема: выверенные слова специалистов из учебников и статей очень наукообразные и для понимания нужно объяснять попроще, искать какие-нибудь простые аналогии из разных областей жизни ( из других предметных областей), чтобы объяснение было более доступным. Человек может читать книгу и не понять ее в итоге по причине наукообразности. На форуме же могут объяснить доступно и в этом как мне кажется и есть задача ответов на форуме, где нельзя отсылать по разным местам Я занимаюсь программированием как хобби примерно 10-11 лет. И простую вещь, что В ФАЙЛЫ ЗАПИСЫАЮТСЯ (например, функцией fwrite языка С) СТРУКТУРЫ (типы данных объявляемые как struct или class в языке C)и СЧИТЫВАТЬ НАДО ТОЖЕ СТРУКТУРЫ (например, функцией fread языка С) я понял лишь на 10-11 году, то есть в этом году, и я постарался на это указать в своем ответе в этом теме. Помимо этого простую вещь, что накладывать на экран, можно область текстуры а не всю текстуру я тоже понял лишь на 10-11 году. Разница между пониманием у новичка, что текстура полностью накладывается и пониманием у специалиста про наложение области существенная. Это подразумевающиеся в статьях, книгах и учебниках вещь и их надо объяснять отдельно, иначе будет непонимание. Новичку надо указывать путь, последовательность важных тем, потому что новичок не сможет выделить главное и второстепенное. И потонет во множестве мелких деталей, а цельной картины мира не будет. Задача обучения и вопросов - составление цельной картины мира, где разные части взаимосвязаны друг с другом. Одна предметная область зависит от другой, то есть все системно взаимосвязано друг с другом. Нужно указывать прямо зачем нужны битовые операции, как работает компьютер, причем не наукообразным языком. 0 в программировании значит, что электрического тока в электрической цепи нет. А 1 значит, что электрический ток в цепи есть. И микропроцессор занимается преобразованием токов внутри самого себя и этим осуществляет арифметические и логические операции. Связь по слотам между устройствами это тоже передача тока по определенному каналам - это простая вещь, но в книгах по прогарммированию не объясняют. Правильные вопросы у новичка возникают после попыток объяснения. Без попыток объяснения не будет даже самих вопросов - будет просто незнание и непонимание. Человек займется совсем другим делом, а на то, с чем хотел разобраться, забьет, то есть бросит. Нужно ввести и пояснить термины, без них новичок просто бросит, то есть даже не задаст вопросы совсем. |
|
------- Последний раз редактировалось mrcnn, 19-04-2012 в 03:43. Отправлено: 03:32, 19-04-2012 | #9 |
Старожил Сообщения: 160
|
Профиль | Отправить PM | Цитировать mrcnn все понятно объяснил. Спасибо!
|
Отправлено: 00:03, 20-04-2012 | #10 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBA - ошибка в коде | noscere | Программирование и базы данных | 0 | 05-04-2012 10:49 | |
Разное - Ошыбка в коде | Wllladik | Программирование и базы данных | 1 | 14-12-2011 02:26 | |
Поясните действия в коде | dzheka3d | Вебмастеру | 2 | 28-05-2011 02:42 | |
Ошибки в PHP-коде | rar864 | Вебмастеру | 7 | 06-04-2011 19:03 | |
C/C++ - [решено] Ошибка в простом коде | Hector | Программирование и базы данных | 5 | 13-10-2010 07:00 |
|