Perl: сохранить изображение из сети - PullRequest
0 голосов
/ 31 марта 2012

Я использую этот код для сохранения изображений с определенного URL, используя Image :: Grab . Но изображение сохраняется в 0 байтах, поэтому изображение отсутствует.

#!/usr/bin/perl

use Image::Grab;
$pic->url('hhttp://www.vikingskipet.no/cam_1.jpg')
$pic->grab;

# Now to save the image to disk
$time = time();
open(IMAGE, ">$time.jpg") || die"$time.jpg: $!";
binmode IMAGE;  # for MSDOS derivations.
print IMAGE $pic->image;
close IMAGE;

Я надеюсь, что кто-то может мне помочь. Я использую cronjobs для запуска скрипта каждую минуту.

Ответы [ 3 ]

6 голосов
/ 31 марта 2012

Основная проблема в том, что вы не создали объект Image::Grab. Вы должны обязательно use strict и use warnings в начале всех ваших программ, особенно когда вы просите о помощи с ними. Это позволит Perl находить и сообщать о простых ошибках, которые вы могли упустить из виду.

Эта программа делает то, что вы хотели, а также переводит имя файла в более читабельную форму

use strict;
use warnings;

use Image::Grab;

my $pic = Image::Grab->new;

$pic->url('http://www.vikingskipet.no/cam_1.jpg');
$pic->grab;

my $file = do {
  my @dt = reverse((localtime)[0..5]);
  $dt[0] += 1900;
  $dt[1]++;
  sprintf "%04d-%02d-%02d.%02d.%02d.%02d.jpg", @dt;
};

open my $img, '>:raw', $file or die qq(Can't open "$file" for output: $!);
print $img $pic->image;
close $img or die qq(Failed to close "$file": $!);

print qq(Image file "$file" saved successfully\n);
3 голосов
/ 31 марта 2012

просто используйте getstore() из LWP::Simple

2 голосов
/ 31 марта 2012

У вас есть дополнительный час на http

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...