Добрый Вечер!
Подскажите, пожалуйста, как можно запустить данный скрипт на Windows?
У меня установлен ActivePerl 5.16.3 Build 1603 с установленными File::Slurp и File::Temp. Как я понимаю, проблема в JPEGtran, но я не понимаю куда его надо положить?
jpegtran.exe это просто запускаемый файл, который можно положить в любую директорую, куда смотрит PATH (это может быть, например, текущая директория или даже c:\windows)
Попробуйте следующую версию: link.
Заменён вызов с пайпой на обработчики IPC::Run.
На винде не проверялось — может не заработать.
И, да, jpegtran.exe в PATH не забудьте. )
Там еще приколы. jpegtran под винду обязательно хочет два файла — входной и выходной, а под линух ему достаточно одного входного. Второй вызов надо тоже переписать на IPC.
И смотрите в самый последний по дате файл *.scan в %TEMP% — там весело.
Unexpected SCALAR(0x339e50) in harness() parameter 1 at B:\jpegrescan.pl line 34.
Unexpected SCALAR(0x318408) in harness() parameter 2 at B:\jpegrescan.pl line 34.
Если не затруднит, не мог бы кто-нибудь сделать один тест у кого есть линукс.
У меня есть папка с jpeg-избражения, не мог кто-нибудь оптимизировать их при помощи скрипта cloud.mail.ru/public/85faf78a4817/JPEG.zip
На винде проблемы с list form of pipe open. Надо переписывать как указал ниже SleepingLion, или пилить perl из msys либо cygwin (ActivePerl и StrawberryPerl не работают). IPC::Run на винде тоже выдает какие-то глюки. Я запустил сразу под линухом — и все завелось.
Честно, это будет быстрее, чем править и тестировать. Скачайте готовую виртуалку с любым линухом (например, тут bitnami.com/stack/lamp), скомпильте jpegtran, пропишите ему libjpeg в LDCONFIG и всё. Пять минут на скачку и минуту на остальное.
Если не затруднит, не мог бы кто-нибудь сделать один тест у кого есть линукс.
У меня есть папка с jpeg-избражения, не мог кто-нибудь оптимизировать из при помощи скрипта cloud.mail.ru/public/85faf78a4817/JPEG.zip
Заменил вызовы, специфичные для *nix на (по идее) более подходящие для Windows.
Во второй версии поправил недосыпные косяки и попробовал изменить формат подачи содержимого кодировщику.
Правда, за неимением желания собирать себе jpegtran (в репозитариях не нашёл сразу), ни один скрипт не проверялся. Хотя надежда, что заработает была, да.
Есть вариант запускать процессы преобразования параллельно. Если (всё ещё) очень нужно, стукнете в личку — будет время, попробую реализовать.
P.S. что за лицензия у проекта?
У меня проект сам использует параллельное преобразования, по этому нет смысла делать в самом скрипте.
Лицензии у проекта нету, я честно говоря не думал тогда какую использовать, думаю в новой версии сделать лицензию MIT (она почти готова, скоро опубликую).