Слайд-шоу изображений в Интернете с использованием PHP, GD, XML и Javascript
Я написал некоторый код для автоматического отслеживания многих объектов с помощью последовательности изображений более 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 ответ
Я собираюсь выбросить пару идей типа мозгового штурма:
Нарисуйте границы объекта как относительно расположенные элементы div с установленными высотой и шириной. Таким образом, вам не нужно генерировать изображения для каждой возможной комбинации. Отслеживание объекта может быть включено для любого данного объекта на лету на странице. Недостатком является то, что более медленные клиенты могут отображать 500 делений медленно.
Еще один способ уменьшить необходимость рендеринга на лету - рендерить (один раз) все рамки отслеживания для каждого объекта в виде многоугольника на прозрачном фоне (PNG или GIF). Когда кадр просматривается, наложите все соответствующие рамки отслеживания объектов на фоновый слой. Нет проблем с рендерингом, просто задержка загрузки, пока клиент загружает 500 изображений.
Вместо того, чтобы каждый раз анализировать XML-файл, создайте массив PHP со всеми точками данных во включаемом файле.
Получите более быстрый процессор и много оперативной памяти для вашего сервера.
Как я уже сказал - случайные идеи. Может быть, они заставляют вас задуматься, может быть, мне было просто интересно подумать. Удачи.