О программе ACLP-52 (Foto Show)

Виктор Кон, 19 декабря 2024 года (http://kohnvict.narod.ru)  

Введение

Программа ACLP-52 (Foto Show) делает сайт, показывающий анимацию с музыкой по фотографиям. Казалось бы в описании к программе все написано, и она стабильно работает на компьютере, подключенном к интернету. При переводе файла на сервер, однако, возникнут проблемы. И вот этот вопрос в описании к программе не обсуждается. Кроме того, возможны варианты написания входных данных, которые работают в некоторых частных случаях. И эти варианты несколько упрощают написание этих входных данных, так как при достаточно большом числе фотографий (картинок) число строк входных данных может быть большим. Все эти вопросы я решил обсудить в этой статье.

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

Но у меня есть сайт, и я легко перенес программу в интернет на свой сайт. Но тут начались проблемы. Если по каким-то причинам возникает задержка в передаче по интернету, то анимация начинает сбоить и некрасиво показывать старое на месте нового, а новое возникает в произвольный момент и дергается. Получается плохо, а как это исправить я не смог сразу придумать. И я отправил эту программу на пенсию, стал делать другие. Постепенно появилась идея закачивать все картинки анимации заранее, то есть до показа анимации. Сейчас такие картинки показываются в таблице в виде иконок.

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

Ниже я расскажу о дополнительных возможностях использования программы в тех случаях, когда эти возможности существуют. К таким возможностям относятся следующие: (1) Имена файлов всех картинок имеют общую часть и числовой номер. (2) Имена файлов всех картинок имеют общую часть и буквы алфавита или другие последовательности символов. (3) Необходимо корректно закачать анимацию в интернет, то есть чтобы браузеры не блокировали работу.

(1) Файлы картинок пронумерованы

В описании программы написано, что во входных данных надо указать адреса всех картинок, каждый адрес на отдельной строке. Это реально так, если все адреса разные. А если они одинаковые и различаются только номером в конце имени, то можно поступить иначе. На первом этапе сделать по программе 52 htm файл анимации с одной картинкой. Затем открыть любой текстовый редактор и в нем файл этой анимации. Там можно увидеть вот такой код в виде 2-х строк (числа могут различаться)

w$=800; h$=600; p$=5000; imga$ = new Array(); imga$ = [
"file:///C:/ . . . /s01.jpg"] </script></head><body><center>

Здесь в кавычках указано формальное имя первого файла картинки. вместо . . . может быть все, что угодно. Если всего картинок n > 10, но < 100, то указанный выше код надо заменить на такой

w$=800; h$=600; p$=5000; imga$ = new Array();
for(k=1; k<10; k++){imga$[k-1]="file:///C:/ . . . /s0"+k+".jpg";}
for(k=10; k<=n; k++){imga$[k-1]="file:///C:/ . . . /s"+k+".jpg";} </script></head><body><center>

И такой код будет работать не для одной, а для всех картинок. Только вместо n надо указать конкретное число, например, 56. Или перед числом определить переменную n, то есть написать n=56; сразу после определения других числовых параметров. Если n < 10, то второй цикл писать не надо, а в первом надо поставить конкретное число картинок вместо 10.

(2) Файлы картинок различаются буквой в конце имени

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

w$=800; h$=600; p$=5000; imga$ = new Array(); var sym="abcdefghijklmnopqrst";
for(k=0; k<20; k++){imga$[k]="file:///C:/ . . . /name"+sym.charAt(k)+".jpg";} </script></head><body><center>

Пример показан для 20 картинок, различающихся 20-ю разными символами. Оба примера показывают абсолютные адреса на компьютере с операционной системой Виндовс, хотя разделители записаны для системы Юникс. Браузеры работают в разных системах и все понимают. Но можно писать и относительные адреса, то есть относительно htm файла анимации. Если картинки находятся в той же папке, то просто пишем (name) и больше ничего не надо. Но так делать неразумно.

Если картинки во внутренней папке данной папки, например с именем pic, то пишем (pic/name) и все. А если в другой папке с именем (new) рядом с данной папкой на том же уровне папок, то пишем (../new/name). Две точки поднимают на уровень выше и потом спускаемся в другую папку. Так можно прописать путь от любой папки к любой папке. Но раумно использовать либо внутренние папки, либо соседние, не более того.

(3) О проблемах с интернетом

Нужно знать, что htm файл, который готовит программа 52, использует другие файлы, размещенные на моем сайте в интернете. Если компьютер находится в интернете, то проблем не будет. А если нет, то анимация не сможет работать. Чтобы он работала без интернета необходимо скачать мои файлы себе на компьютер. Делается это стандартным образом, то есть записывается адрес файла в командную строку браузера, сайт показывается и потом нажимаются клавиши [Ctrl]+[S]. А как узнать адреса. Для этого есть такой алгоритм. Запускаете анимацию, затем нажимаете кнопки [Ctrl]+[U]. Браузер в отдельном окне покажет код сайта. И ссылки на другие сайты там будут показаны синим цветом и их можно кликать.

И просто кликаете на ссылки. Браузер показывает содержимое файлов. Потом нажимаете клавиши [Ctrl]+[S]. Файл скачивается на компьютер, обычно в папку [Download] и указывается имя файла без адреса сервера. Затем файл надо перенести куда вам удобно и поменять ссылку так, как я написал выше, то есть либо полную, либо относительную. Некоторые служебные файлы используются одинаково для всех анимаций и их удобно разместить в отдельную папку.

Другая проблема может возникнуть при загрузке файлов на сервер. Тут сложность состоит в том, что стандартно код сайтов записывается в формат http. Но с некоторых пор браузеры и серверы стали шифровать файлы сайтов. И такие файлы имеют адреса https. Хотя какой в этом смысл я не очень понимаю, потому что код сайтов все равно браузеры показывают. Но и это еще не предел. Некоторые серверы, мой например, автоматически шифруют файлы при загрузке и они становятся https, а я загружаю http и ссылки даю тоже на такие адреса. И браузеры не открывают такие сайты.

А причина простая. Сейчас (относительно недавно) нельзя использовать http файлы внутри https файлов. Это еще один идиотизм, каких много в современном мире, но с ним приходится считаться. По этой причине лучше всего использовать только относительные адреса, чтобы букв http не было совсем. Тогда все работает. Разумеется, что в этом случае не получится использовать файлы с другого сервера. Но речь идет только о файлах типа html. Все другие файлы типов pdf, jpg, mp3 это не касается. Они работают.

.