![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| 0x00 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 3.4.2006 Репутация: нет Всего: нет |
Никогда не работал с файлами определенного формата. Итак есть 1 вопрос.
Расскажу на примере. Допустим есть у нас файл c:\file.gif размером 100 на 100 в файле нарисована горизонтальная линия. Как мне программно нарисовать еще одну вертикально? Не обязательно GIF, можно на примере JPG или BMP рассказать. |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Где нарисовать? На канве? Или видоизменить файл, чтобы там появилась линия?
|
|||
|
||||
| 0x00 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 3.4.2006 Репутация: нет Всего: нет |
видоизменить файл, чтобы там появилась линия
|
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
На мой взгляд достаточно трудоемкая задача, если разбирать каждый формат файла.
Простое решение - нарисовать на канве изображение из файла, потом дорисовать туда что душе угодно и сохранить в файл. Можно и канву не использовать - рисовать прямо в памяти. Главное, не разбирать самостоятельно каждый формат - дело долгое и на мой взгляд бессмысленное - все это уже сделано за нас. |
|||
|
||||
| 0x00 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 3.4.2006 Репутация: нет Всего: нет |
2Anikmar: можешь привести пример как это сделать с каким-нибудь из этих форматов файлов в памяти?
|
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
К сожалению примера под рукой нет. Я никогда этим не занимался - выводил только на форму. Но по этому вопросу очень много есть и в литературе и на форуме - если воспользоваться поиском, то примеров будет много. Вывод в память используется для анимации движущихся картинок - пока одна на экране, готовится следующий кадр и заливается на экран целиком. Думаю искать надо в разделе графика/мультимедиа или в WinApi |
|||
|
||||
| 0x00 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 3.4.2006 Репутация: нет Всего: нет |
я весь форум перерыл, такого нет... есть про вывод на экран, а вот про редактирование нет.
|
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 8 Всего: 146 |
Имхо проще открыть дорисовать и сохранить заново
http://forum.vingrad.ru/index.php?showtopi...t&p=1014729 ссылки на работу с разными форматами -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
||||
|
||||
| 0x00 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 3.4.2006 Репутация: нет Всего: нет |
вот есть пример кода который в массив заносит цвета... допустим как изменить массив - это не проблема... вот как записать этот массив (в данном случае image) обратно?
|
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Ну, можно и по пикселям рисовать, конечно...
Не вижу большого смысла декодировать файл bmp вручную. А потом придется декодировать jpeg, потом tiff и т.д. В Билдере для этого существует классы TCanvas, TPicture, TJpegImage и т.д. |
|||
|
||||
| 0x00 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 3.4.2006 Репутация: нет Всего: нет |
вот как мне например можно изменить пикселы от 1000 до 4000 например на черные и записать их обратно в файл?
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 12 Всего: 459 |
Рисовать можно либо на пиксельной карте (битмапе) либо на векторной плоскости, после чего изображение можно конвертировать в любой формат, хотя бы при помощи того же встроенного GDI+ или любой другой библиотеки. Файл растровой графики почти всегда превращается в битовую карту. (исключения, узкий набор преобразований над сжатыми картинками). Файл векторной графики отображается на векторную канву. В памяти ли она или на экране это без разницы, метод доступа одинаков.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 15 Всего: 118 |
предлагаю использовать библиотеки. например GFL SDK
---- http://www.xnview.org http://www.xnview.com http://www.xnview.net ---- LTI-Lib найти можно на http://ltilib.sourceforge.net/doc/html/index.shtml ---- или взять сорцы чего-нибудь... например ImageMagic....gimp и прочих... потому как самому маятся с сжатыми форматам уж очень геморно... -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| nworm |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 502 Регистрация: 22.10.2005 Репутация: 1 Всего: 8 |
0x00,
Например, структура bmp-файла Если хочешь менять свой код, то сохрани в функции load_bmp в какую-нибудь переменную всё, что идёт в файле до изображения. Ну а в итоговый файл запишешь то, что идёт до изображения и изображение. Но с другими форматами придётся ещё мучиться. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |