Хотя мне нравится (и голосовал против) @ luserdroog ответ, я не верю, что Postscript следует использовать для анимации таким способом - я бы предпочел использовать некоторый язык, который может запускать виджеты или элементы отображения, предназначенные для отображения в реальном времени.и взаимодействие с пользователем - это не относится к postscript или ghostscript.
Я думаю, что было бы неплохо, однако, использовать postscript для анимации в целях рендеринга - просто рендеринг страницы после каждой модификации изображения и использованиевнешняя программа для сборки различных страниц в виде кадров анимации.Возможно даже использование postscript в качестве движка рендеринга, когда процесс на другом языке вызывает ghostscript для рендеринга каждого кадра в реальном времени.Хорошим и простым в использовании мультимедийным фреймворком для этого может быть, например, язык Python с модулем Pygame.
Вот краткий пример использования "чистого python + pygame".
#! /usr/bin/env python
# coding: utf-8
import pygame
size = 640,480 #(in pixels)
# multiplying factor so that the whole image is 5 units across
factor = size[0] / 5.0
# Inits pygame drawing window
screen = pygame.display.set_mode(size)
# Rectangle drawing function that scales drawing using the factor above
def draw_rect(color, rect):
new_rect = [int (r * factor) for r in rect]
return pygame.draw.rect(screen, color, new_rect)
def main():
draw_rect((128,128,128), (0, 0, 3, 3))
colors = ((255,255,255), (0,0,0))
color_index = 0
while True:
draw_rect(colors[color_index], (0, 1, 3, 1))
pygame.display.flip()
color_index = 1 - color_index
pygame.time.delay(50) # in miliseconds
try:
main()
finally:
pygame.quit()
Чтобы выполнить это, вы должны иметь Python и Pygame (от http://pygame.org - для этого в большинстве систем Linux есть готовые пакеты)
API рисования Pygame:намного беднее, чем postscript - если вам нужно больше, чем прямоугольники (например, бези, масштабирование, вращение и сдвиг системы координат и т. д.), лучше всего использовать Cairo + python + некоторую библиотеку отображения (которая может быть pygame, GTK +или QT).Cairo - это библиотека 2D-чертежей, которая наследуется от PostScript.- или, как я уже говорил выше, для управления внешним процессом ghostscript с помощью Python, который генерирует сжатый файл образа rle для stdout или ramdrive, и это изображение читается и отображается кадр за кадром с помощью python + pygame.
Другой вариант - использовать HTML5 Canvas и делать все в Javascript, доступном для просмотра в браузере.Canvas в HTML5 также наследует способ создания PostScript.