Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.51/41: Рейтинг темы: голосов - 41, средняя оценка - 4.51
0 / 0 / 0
Регистрация: 19.05.2006
Сообщений: 7

Формат хранения изображения в графическом редакторе

20.05.2006, 17:04. Показов 7934. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно сделать графический редактор, но сделать свой собственный формат хранения. Причем, его можно было бы переводить, например, в JPEG и обратно. Подскажите, плиз, или дайте линк. :oops:
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.05.2006, 17:04
Ответы с готовыми решениями:

В графическом редакторе при открытии изображения, поверх него прошлые рисунки
В графическом редакторе при открытии изображения, поверх него прошлые рисунки на Image что можно сделать, очистить не получается вот...

Ноутбук до 26.000 р. для работы в графическом редакторе или видео-редакторе
Так же для работы в Cubase. Я понимаю, что для работы с графикой, рендеренгом видео, необходима мощность процессора. Что лучше,...

Часы в графическом редакторе
Доброго времени суток, уважаемые господа. На этот раз столкнулся с более сложной проблемой. Задача такова: В графическом редакторе...

14
5 / 4 / 3
Регистрация: 01.05.2006
Сообщений: 181
20.05.2006, 22:20
Поясни насчет JPG и обратно. Этим же редактором что ли?
Текст могу подсказать, если в Дельфи, но будет очень примитивно... но рисовать можно В Паскале не смогу
0
20.05.2006, 22:34
Т.е. формат для хранения рисунка должен быть мой. Чтобы работать как с объектом. Код, в Delphi. Буду признательна! :oops:
0 / 0 / 0
Регистрация: 19.05.2006
Сообщений: 7
20.05.2006, 22:36  [ТС]
Ups!.. =) Т.е. формат для хранения рисунка должен быть мой. Чтобы работать как с объектом. Код, в Delphi. Буду признательна! :oops:
0
5 / 4 / 3
Регистрация: 01.05.2006
Сообщений: 181
20.05.2006, 22:46
Ну, в JPG не сделаешь так просто... чтобы можно было в БМП устроит?
И еще, сколько цветов желательно?
0
0 / 0 / 0
Регистрация: 19.05.2006
Сообщений: 7
22.05.2006, 03:28  [ТС]
Можете пояснить почему это будет так сложно? Точное количество цветов мне ещё не установили, так что насколько это возможно. :oops:
0
5 / 4 / 3
Регистрация: 01.05.2006
Сообщений: 181
22.05.2006, 13:05
В JPG идет двойное сжатие, и там сложна структура файла. Поэтому лучше в БМП.
Но можно свой формат сжимать, тогда будет что-то вроде PNG.
0
0 / 0 / 0
Регистрация: 19.05.2006
Сообщений: 7
22.05.2006, 14:55  [ТС]
Если можно это как-то наглядно, с кодом показать, я хотя бы принцип пойму. Просто, я подобным заданием ещё не сталкивалась.
0
5 / 4 / 3
Регистрация: 01.05.2006
Сообщений: 181
25.05.2006, 11:31
Лучший ответ Сообщение было отмечено ildwine как решение

Решение

Могу подкинуть пару идей, как это сделать.
Во-первых, естесственно, пользовательский интерфейс. Помести панель инструментов и палитру на форму. Наверняка юзал Паинт, вот сделай что-то похожее. И еще - изображение. Желательно типа TImage, если с VCL, или что-то подобное. Размером - как максимально возможный рисунок. А его полностью накрой невидимыми кнопками размером 1*1 пиксел, причем программным способом (т. е. напиши код вручную).
Теперь - собственно рисование.
Точку сделать легко - доступ к свойству Pixels изображения у нас есть.
Прямоугольник. По двум координатам считаем еще две и проводим четыре линии. Закрашенный - еще проще, есть процедура, не помню какая.
Овал. Так же, как и с прямоугольником, ищем центр и радиусы, после чего вызываем Ellipse( ) .
Линия. Процедура Line.
Заливка. Здесь алгоритм следующий:
[i:5908bb32b1] определить цвет точки
ПОВТОРЯТЬ
перекрасить ее
ДЛЯ всех соседних точек
ЕСЛИ цвет совпадает с запомненным, повторить процедуру для нее
ПОКА можно закрасить хоть одну точку[/i:5908bb32b1]

Думаю, это можно сделать в цикле, но на псевдокоде оказалось проще записать рекурсивно.
Выбор цвета. Клик по пикселу делает основным его цвет.
Выделение. Прямоугольник между соответствующими точками выносит его на невидимый объект, где будет существовать до снятия выделения. Размеры объекта можно корректировать по ходу программы.
Кисть. Вокруг указанной точки отмечаешь соседние пиксели в соответствии с формой кисти.
Повернуть. Точка (х, у) переместится в:
-точку (махх-у, х) (90 градусов);
-точку (махх-х, маху-у) (180 градусов);
-точку (у, махх-х) (270 градусов).
Растянуть. Попробуй применить матричные действия: умножь координаты точек на матрицу
Sx 0 0 0
0 Sy 0 0
0 0 0 0
0 0 0 1,
где Sx и Sy- соответствующие множители. Пробелы между точками заполни цветом или цветами, промежуточными между ними.
Отразить. По горизонтали: точка (х, у) перейдет в точку (махх-х, у)
По вертикали - аналогично. Меняется только не х, а у.
Ну в общем-то этого может хватить.
О формате расскажу попозже.
Ну вот и все. Будут проблемы с кодом - пиши.
0
0 / 0 / 0
Регистрация: 19.05.2006
Сообщений: 7
25.05.2006, 20:31  [ТС]
Spasibo bol'shoe!!
No mne imenno format i nuzhen. =)
0
5 / 4 / 3
Регистрация: 01.05.2006
Сообщений: 181
25.05.2006, 21:28
А я вот так с лету не вспомню даже БМП как делать потом напишу как сохранять
0
0 / 0 / 0
Регистрация: 19.05.2006
Сообщений: 7
25.05.2006, 23:44  [ТС]
В любом случае, огромное спасибо! Мне тут разъяснили:
т.е., например, мы что-то нарисовали, квадрат, который немного закрывает круг. Чтобы мы могли работать с каждым как с объектом отдельно, при этом и после сохранения а потом открытия файла, мы всё ещё могли работать с каждым отдельно(например, растянуть квадрат). Т.е. если бы это был JPEG, то эта информация бы потерялась. =)
0
5 / 4 / 3
Регистрация: 01.05.2006
Сообщений: 181
26.05.2006, 11:49
А, так тебе нужен векторный редактор? так бы сразу и сказала. Извини, в векторной графике не разбираюсь.
Хотя некоторые мои идеи будут продолжать работать. Просто сохранять надо не через Объект.Picture.SaveToFile(), а записать в файл массив, в котором содержатся описания графпримитивов.
0
0 / 0 / 0
Регистрация: 19.05.2006
Сообщений: 7
26.05.2006, 20:05  [ТС]
Да, как оказалось, мне сначала не точно задали...
В любом случае, огромное спасибо за подсказки!!
0
5 / 4 / 3
Регистрация: 01.05.2006
Сообщений: 181
26.05.2006, 23:14
да пожалуйста
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.05.2006, 23:14
Помогаю со студенческими работами здесь

Ошибки в графическом редакторе
Мне нужно сделать графический редактор на си шарп, но выскакивает море ошибок. Я прописал такой код using System; using...

Фреймы в графическом редакторе Питона
Здравствуйте! Подскажите,пожалуйста,как виджеты сделать сбоку окна ,а не посередине. Tkinter только изучаю,сильно не серчайте.

Инструмент выделения в графическом редакторе
Добрый день! Помогите реализовать инструмент выделения в растровом графическом редакторе - нужно чтоб можно было масштабировать выделенную...

Не работают кнопки в графическом редакторе
unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, PrintersDlgs, Forms, Controls, Graphics,...

Рисование линии в графическом редакторе
СПАСИТЕ, ПРОШУ. Курсовой проэкт сдавать через 2 недели, а Я никак разобраться не могу. Я Пишу редактор, руководствуясь Учебным курсом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru