Это довольно предположительно, поэтому, возможно, не уместный вопрос. Если вы считаете, что я должен вместо этого спросить, где задать такой вопрос, пожалуйста, не стесняйтесь перенаправить меня.

Насколько мне известно, работа с файлами изображений осуществляется путем внесения серии изменений в эти файлы, которые затем сохраняются как новая версия файла, содержащего новое состояние. Хотя сами файлы могут быть в разбираемом текстовом формате (хотя это не так в случае файлов Photoshop или GIMP), и выполняемые действия могут быть отменены, я не знаю ни одной системы редактирования графики, формат файла которой является серия шагов, выполняемых на множестве исходных изображений; Насколько я понимаю, большинство форматов графических файлов носят декларативный, а не процедурный характер.

Я думаю, что сохранение набора шагов, а не состояния, было бы очень разумным способом сохранения файла изображения, поскольку это позволило бы сохранить сложную историю без многократного сохранения больших двоичных битов. Это также позволило бы легко управлять версиями в системах SCM, даже устраняя необходимость блокировать файлы изображений, как это обычно делается при работе с общими носителями в Photoshop или GIMP.

Локально скомпилированная версия изображения будет служить кешем: она будет обновляться и использоваться, чтобы избежать необходимости перестраивать состояние получающегося изображения при каждом его открытии.

В идеале можно было бы повторно применить различные этапы создания окончательного изображения или изменить параметры этих этапов с минимальными сложностями. Возможность извлечения последовательных шагов и параметризации их для будущего использования в качестве макросов может стать очень удобной для реализации.

Есть ли полезная система редактирования изображений, которая работает аналогично этому? Я немного раздражаюсь из-за отсутствия универсальности в gimp: я хочу, чтобы он работал больше как vim .

Советы о том, как делать подобные вещи в GIMP (возможно, с использованием Python-fu), также весьма приветствуются, хотя, возможно, наиболее уместно в качестве комментариев, а не ответов.

Мои требования к использованию - это что-то с открытым исходным кодом и работает под Linux, но мне интересно услышать о любых и всех системах, которые работают таким образом, независимо от статуса лицензирования или переносимости.

2 ответа2

1

Ну, в некотором смысле, существующие форматы изображений могут быть квалифицированы как то, что вы ищете, поскольку что такое растровое изображение, а серия "инструкций", говорящих "установить цвет пикселя XXX на YYY"? Или SVG-изображение - это XML-файл, содержащий такие инструкции, как "нарисовать линию от A до B" или «поместить синий круг с радиусом R в точку P.» Я вижу, что вы говорите о желании чего-то большего, формата, в котором хранится фактическая последовательность шагов, которые вы фактически использовали для создания изображения, но это может требовать немного больше. Я имею в виду, не только среди изображений, но даже для аудиофайлов, текстовых файлов или текстовых документов. Существует ли какой-либо формат файла, в котором хранится точная последовательность действий, используемых для создания контента? Я не могу думать ни о чем.

Вот еще одна вещь, о которой стоит подумать: формат файла изображения, состоящий из упорядоченных инструкций для создания изображения, в основном будет компьютерной программой или сценарием, а не тем, что большинство людей действительно рассматривает изображение. Это было сделано, хотя. Например, для изображений, которые я использую на своем веб-сайте, мне часто нравится создавать сценарий, содержащий набор команд, которые воссоздают изображение, и я сохраняю сценарий в моей системе контроля версий или в любом другом месте. Сами команды могут быть, например, командами ImageMagick; Лично мне нравится использовать пакет TikZ для LaTeX. (В TikZ есть небольшой симпатичный редактор под названием CirKuit, который предлагает автоматически обновляемый предварительный просмотр изображения при его создании; это не WYSIWYG, но, кроме того, это, наверное, самое близкое, что я видел к тому, о чем вы спрашиваете.)

1

Это было сделано. Формат "pict" для Macintosh до OS X представлял собой серию закодированных команд QuickDraw. И вы, конечно, можете сделать что-то очень похожее в postscript (то есть просто записать вызовы, необходимые для рисования изображения после того, как определен некоторый набор примитивов).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .