Слайд-шоу изображений в Интернете с использованием PHP, GD, XML и Javascript - PullRequest
0 голосов
/ 06 августа 2010

Я написал некоторый код для автоматического отслеживания множества объектов с помощью последовательности изображений более 1000 кадров. Границы объекта и центры выводятся в xml по моему алгоритму. Я делаю сайт, чтобы показать свои результаты, и я хотел бы иметь навигационное слайд-шоу с функциями обычного воспроизведения, паузы, перемотки вперед и назад. В настоящее время у меня настроена очередь циклических кадров php-javascript. Это работает, когда 10 кадров содержат изображения 1-10, затем, когда пользователь хочет увидеть изображения 2, измените вид и загрузите изображение 11 в кадр 1 и так далее. Этот стиль циклической очереди хорошо работает для обычной прокрутки, но я хотел бы менять изображение каждые 100 мс, и оно замедляется. Есть ли лучший способ сделать это на этой стороне?

Мой основной источник замедления состоит в том, что мои изображения динамически отображаются в GD из XML-файла, содержащего большое количество точек данных. Я использую file_get_contents и функции simpleXMLELement, чтобы получить данные в массивы, а затем нанести их на изображение с помощью imagepolygon. Есть ли лучший способ сделать это?

Каждое изображение имеет размер 1400 на 900 и содержит от 30 до 500 объектов, в зависимости от того, насколько далеко оно находится в последовательности. Я пытался сохранить физически построенные изображения, но поскольку пользователям необходимо иметь возможность изолировать объекты 1-10 или 3,7,8-11, это невозможно из-за количества перестановок.

1 Ответ

1 голос
/ 06 августа 2010

Я собираюсь выбросить пару идей типа мозгового штурма:

  1. Нарисуйте границы объектов в виде относительно расположенных элементов div с установленными высотой и шириной. Таким образом, вам не нужно генерировать изображения для каждой возможной комбинации. Отслеживание объекта можно включить для любого данного объекта на лету на странице. Недостатком является то, что более медленные клиенты могут отображать 500 делений медленно.

  2. Еще один способ уменьшить необходимость рендеринга на лету - визуализировать (один раз) все рамки отслеживания для каждого объекта в виде многоугольника на прозрачном фоне (PNG или GIF). Когда кадр будет просмотрен, наложите все соответствующие рамки отслеживания объектов на фоновый слой. Нет проблем с рендерингом, просто задержка загрузки, пока клиент загружает 500 изображений.

  3. Вместо того, чтобы каждый раз анализировать XML-файл, создайте массив PHP со всеми точками данных во включаемом файле.

  4. Получите более быстрый процессор и много оперативной памяти для вашего сервера.

Как я уже сказал - случайные идеи. Может быть, они заставляют вас задуматься, может быть, мне было просто интересно подумать. Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...