Программа vkSS.jar

Назначение

Программа показывает автоматическое слайд-шоу с возможностью ручного управления показом. Слайды представляют собой картинки из jpg или png файлов, которые могут быть размещены как на локальном компьютере, так и в интернете. Одновременно можно запустить фоновую музыку из midi файлов (с расширением mid). Программа является проигрывателем файлов по списку, который автоматически считывается из файла с расширением [vks]. Этот файл должен быть записан в ту же папку, где находится сама программа. Автоматически запускается первый из списка файлов c таким расширением, поэтому во избежание конфликтов надо следить, чтобы нужный вам файл был первым в списке, в остальном его имя может быть произвольным. Это файл будем называть файлом протокола.

Пользователь должен сам набить этот файл в любом текстовом редакторе, хоть в Notepad. В файле протокола кроме имен файлов картинок и музыки должны содержаться параметры показа, о чем написано ниже. Есть особый режим работы программы на один протокол. В этом случае файл с названием default.vks должен находиться внутри самого файла программы vkSS.jar. Я напомню, что любой jar-файл - это просто zip архив, в который можно добавлять новые файлы. Самый простой способ - это переименовать jar в zip, затем скопировать файл в zip, используя Тотал Коммандер. После этого файл можно снова переименовать в jar и изменить его имя. Файл показа на один протокол может рассматриваться как проигрыватель протокола. Этот режим особенно удобен в том случае, когда все имена файлов протокола указывают на интернет.

Запуск программы

Программу нужно скачать по адресу
http://kohnvict.narod.ru/vkSS.zip
Программа написана на языке программирования Java и исполняется специальной программой JRE. Эта программа устанавливается на компьютер один раз на всю жизнь и просто является расширением операционной системы. Скачать файл дистрибутива можно по адресу
https://www.dropbox.com/s/u9ct71fnkuyj552/jre-6u04.zip?dl=1
Это старая 6-я версия меньшего размера, но ее хватит. Ее даже не надо устанавливать, она уже рабочая. Только перед запуском надо указать путь к файлу, как показано ниже. А можно скачать последнюю версию с официального сайта Java и установить ее. Скачав файл запускаете дистрибутив, соглашаетесь с лицензией и она все быстро установит.

Программа запускается как любая java программа без параметров, то есть простым кликом, но если установки не было необходимо использовать режим командной строки

set path=(путь к файлу java.exe);%path%
java -jar vkSS.jar

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

Нужно отметить, что в настоящее время программа аккумулирована в более общую программу vkACL.jar. Если у вас уже есть программа vkACL.jar, то скачивать отдельно программу не имеет смысла. А вот как с ней работать все надо надо прочитать.

Структура файла протокола

Файл протокола должен быть записан по определенной системе, а именно:

В первой строке
должно быть набито имя файла с фоновой музыкой и через знак '|' (вертикальная черта) пять чисел, разделенных пробелами. Первое число - номер картинки, к которой будет произведен возврат после показа всех картинок из списка. Этот номер не обязательно должен указывать на первую картинку.

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

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

Для файла фоновой музыки нужно использовать MIDI (mid) файл. Встроенный проигрыватель программы не играет mp3 файлы, а файлы с расширением wav, au, aif имеют очень большой размер. Все файлы задаются своим URL адресом, то есть указывается полный адрес файла либо в интернете, либо на локальном компьютере. Вот примеры правильного задания адресов файлов:
http://kohnvict.narod.ru/midi/In-Grid-In-Tango.mid
File:d:/SS/1/tango.mid
В первом примере файл находится в интернете на моем сайте в папке /midi/. Я буду постепенно выкладывать туда коллекцию таких файлов, которые можно будет использовать для фоновой музыки. Во втором примере файл находится на локальном компьютере. В этом случае адрес должен начинаться словом (File:) а затем должен быть указан полный путь к файлу на компьютере. Есть исключение из этого правила для удобства отладки. Если перед именем файла стоит знак ($), например $sh001.jpg, то этот файл будет считан из архива программы в папке с названием [resources]. Записывать такие файлы можно тем же способом, что и файл default.vks. Если же в архиве такая папка не будет найдена или файл не будет найден, то будет сделана попытка найти его на компьютере в такой же папке внутри текущей папки, где находится сама программа.

В следующих строках должны быть указаны имена файлов с картинками, но после некоторых из них могут быть строки, предписывающие поставить на картинку текст (см. ниже). В строках-указателях перед именем файла с картинкой первым символом должен быть набит символ "#", допустимые форматы: GIF, JPG, PNG. Сразу за именем файла через знак '|' записывается время показа данной картинки в сантисекундах (0.01 сек).
  В этой же строке можно указать второе число через пробел, которое будет определять режим перехода от предыдущей картинки к новой картинке. Сейчас работают 12 режимов перехода, задаваемых цифрами от 1 до 12. Время перехода 0.35 сек для первых 6 режимов и немного больше для последних 6 режимов (зависит от быстродействия процессора). Все режимы перехода описаны ниже в таблице

0 -- мгновенная смена кадра.
1 -- схлопывание старой картинки в центре.
2 -- вырастание новой картинки из центра
3 -- вырастание новой картинки из левого верхнего угла
4 -- вырастание новой картинки из левого нижнего угла.
5 -- новая картинка падает сверху вниз
6 -- новая картинка наползает слева направо
7 -- новая картинка смешивается со старой и ее вес все время растет от 0 до 1
8 -- старая картинка теряетяркость, затем новая картинка наращивает яркость
9 -- новая картинка выталкивает старую слева
10 -- новая картинка выталкивает старую справа
11 -- новая картинка выталкивает старую сверху
12 -- новая картинка выталкивает старую снизу

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

Это еще не все. За смещениями можно указать еще тройку чисел: пятое, шестое и седьмое. Эти числа регулируют динамику изменения картинки в процессе показа, которая достигается автоматическим показом новых кадров, либо полученных из основного масштабированием, либо показываемых со смещением, что и создает эффект динамики. Пятое число указывает время смены кадров в сантисекундах (0.01 сек). Если оно равно нулю - ничего не происходит. Шестое число указывает число пикселей, которые используются при изменении. Оно может быть как положительным так и отрицательным. Седьмое число может быть равным 0, 1 или 2.

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

  Если седьмое число равно 1, то картинка будет двигаться слева направо или справа налево в зависимости от знака смещения. Для правильного показа исходная картинка должна иметь размер по горизонтали больше чем размер окна на величину S*N где S - абсолютная величина однократного смещения (параметр 6 без знака), а N - полное число кадров как отношение полного времени показа T к времени показа одной картинки D. Время показа одной картинки D можно ставить минимальным, то есть 1 и однократное смещение S тоже можно ставить минимальным, то есть 1. Тогда если горизонтальный размер окна равен 800, то размер картинки должен быть равен 800+T. Более того, исходно картинка должна быть поставлена со смещением на T/2 в другую сторону. При заданных размерах окна и картинки замедлить показ вдвое можно задав T и D в два раза больше одновременно.  

 Если седьмое число равно 2, то картинка будет двигаться сверху вниз или снизу вверх в зависимости от знака смещения. Все остальное должно быть так же как в предыдущем случае, только по вертикали.

Картинки могут иметь произвольный размер и исходно они показываются как есть, без масштабирования. Поэтому очень большие картинки будут обрезаны если их не масштабировать заранее. Как уже говорилось, если размер картинки больше окна, то показывается та часть, которая соответствует окну, то есть как бы фрагмент. Поэтому нет смысла включать в файл те части картинки, которые не будут показаны, лучше ее промасштабировать или вырезать. Для масштабирования рекомендую программу на сайте
"http://www.realfiletools.com/free/photo-resize.htm".
А вырезать фрагменты можно с помощью моей прогроммы Image Proc, либо используя ее в отдельной версии, либо в рамках пакета vkACL. Image Proc может и масштабировать, но только фотографии менее 2500 точек по горизонтали.

Важно также помнить, что вновь показываемая картинка накладывается на предыдущую и если она имеет меньший размер, то предыдущая картинка остается частично видна.

В некоторых строках можно задать инструкцию установки на предыдущую картинку текста без фона, то есть как бы в прозрачном режиме. На самом деле текст просто рисуется на картинке. Чтобы заказать такой режим нужно после строки с нужной картинкой поставить строки специального вида. Эти строки могут присутствовать в любом числе для каждой строки текста отдельно. Итак, чтобы поставить текст на картинку надо набрать строку следующего типа
text=xxxxxxxxx| T S X Y R G B K
Здесь вместо xxxxx должен быть сам текст, который будет показан. Можно задавать как английский, так и русский текст в win-1251 кодировке. Буквами обозначены целые числа - параметры текста, а именно:
T - время показа текста в сантисекундах (0.01 сек)
S - размер фонта в пикселах
X Y - координаты левого нижнего угла текста в пикселах
R G B - параметры красного зеленого и синего для цвета текста в диапазоне от 0 до 255
K - тип текста, допустимые значения 0 - обычный, 1 - жирный, 2 - курсив, 3 - жирный курсив
Шрифт текста зафиксирован как "Sans Serif" и не может быть изменен.

Каждая новая строка добавляет на картинку новый текст не убирая старый. Так можно создать эффект постепенного возникновения текста, строка за строкой. Чтобы начать сначала, надо снова нарисовать картинку.

Важное замечание - текст ставится на картинку, а не на анимационное окно. Поэтому если размеры картинки будут больше размеров анимационного окна, то координаты текста могут не соответсвовать окну и будут смещены. Еще одно замечание, достаточно очевидное, но все же. Текст ставится только после того, как анимация заказанная на картинку полностью закончится. То есть если заказано движение картинки то оно все закончится и после этого только возникнет текст. Причина в том, что программа не читает новую инструкцию, пока не выполнит предыдущую полностью. Поэтому не ставьте текст на движущиеся картинки.  

В дистрибутиве дается образец файла протокола (default.vks) для показа картинок из интернета. Более фасонные протоколы буду выставлены позднее.

Ручное управление показом

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

  [Esc] -- полный выход из программы
  [Enter] -- принудительная остановка показа, программа выключает фоновую музыку и ждет повторного нажатия клавиши,
     после чего фоновая музыка включается с самого начала и программа переходит на следующий кадр.
  [Стрелка наверх] -- возврат на один кадр назад
  [Стрелка влево] -- возврат на два кадра назад
  [Backspace] -- возврат на три кадра назад
  [Page Up] -- возврат на четыре кадра назад
  [Page Down] -- движение вперед на пять кадров
  [C] -- отмена фоновой музыки
  [O] -- включение фоновой музыки после отмены
  [Home] -- переход в самое начало
  [End] -- переход в самый конец, после чего можно крутить назад
  [Любая другая клавиша] -- движение вперед на один кадр

Данная версия программы выставляет картинку с указанным выше текстом. Картинка записана в файл information.png сразу на двух языках.

*******

Автор программы:
Кон Виктор Германович, физик-теоретик Курчатовского Института, Москва.
Все свежие версии данной программы будут появляться на сайте http://kohnvictl.ucoz.ru



  Внимание! Сайт оптимизирован под браузер Google Chrome.