Я пытаюсь загрузить изображения с веб-сайта и пробовал:
curl -o img.jpg (URL)
wget (URL) -O img.jpg
wget --save-headers -U "Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.17 (KHTML, Gecko) Ubuntu/11.04 Chromium/11.0.654.0 Chrome/11.0.654.0 Safari/534.17" (URL) -O img.jpg
В каждом случае команда работает, когда я запускаю ее в терминале. Однако, как только я пытаюсь включить ее в какой-нибудь скрипт bash, изображение портится со следующим сообщением:
Error interpreting JPEG image file (Not a JPEG file: starts with 0x48 0x54).
Сценарий:
#!/bin/bash
#I pass the url as a parameter - http://img1.goodfon.su/wallpaper/original/f/c3/les-eli-lokomotiv-noch-sneg.jpg
#wget --save-headers -k -U "Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.17 (KHTML, Gecko) Ubuntu/11.04 Chromium/11.0.654.0 Chrome/11.0.654.0 Safari/534.17" $1 -O img.jpg
#curl -o img.jpg $1
wget $1 -O img.jpg
avconv -framerate 25 -f image2 -i img.jpg -c:v h264 -crf 1 out.mov
решение1
Два шестнадцатеричных числа в
Not a JPEG file: starts with 0x48 0x54
перевести в ASCII HT
, который, как я полагаю, продолжает HTTP[...]
. Проверьте заголовок файла с xxd -l 20 img.jpg
. Это ожидаемый вывод от последней команды, которую вы разместили, так как
wget --save-headers
указывает на wget
необходимость добавления заголовка HTTP
ответа к выводу.
Два других заклинания этого не сделают.
Я только что проверил ваш скрипт, и он работает либо с ,
curl
либо wget
. Для wget
загрузки файла -U
необходима строка пользователя, в противном случае сервер отказывает. Либо используйте
curl -o img.jpg $1
или
wget -U "Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.17 (KHTML, Gecko) Ubuntu/11.04 Chromium/11.0.654.0 Chrome/11.0.654.0 Safari/534.17" $1 -O img.jpg
без --save-headers
.