以下腳本在循環中運行,使用LWP::UserAgent
檢索圖像,並使用Image::Magick
調整它們的大小。使用LWP :: UserAgent的圖像損壞
我從Image::Magick
讀取下載的圖像時收到此錯誤:
Exception 450: Unsupported marker type 0x54
如果我的LWP下載的圖像下載到我的電腦,在照片編輯器中打開它,保存爲.jpg文件,上傳並嘗試用Image::Magick
閱讀,然後一切正常。這會導致我相信圖像沒有正確保存。
我需要使用LWP::UserAgent
,因爲我連接的服務器將不允許下載,除非它認爲客戶端正在請求數據。
use LWP::UserAgent;
use Image::Magick;
$ua = new LWP::UserAgent;
$ua->agent("$0/0.1 " . $ua->agent);
$ua->agent("Mozilla/8.0");
my $PICURL ="http://www.example.com/img.aspx?pid=cjfsaf79afffafhfah777af7";
my $PICDEST ="/var/vhosts/mysite.com/httpdocs/images";
my $PICNAME ="01.jpg";
my $response = $ua->get("$PICURL");
open(outfile, ">:raw", "$PICDEST/$PICNAME");
binmode outfile;
if ($response->is_success) {
print outfile $response->content;
$Pi++;
$PTOT++;
}
else {
die $response->status_line;
}
$image = new Image::Magick;
$image->Read("$PICDEST/$PICNAME");
$image->Scale(width=>800, height=>600);
$image->Write("$PICDEST/$PICNAME");
$image->Scale(width=>216, height=>163);
$image->Set(quality=>90);
$image->Write("$PICDEST/TH_$PICNAME");
我同意。但我認爲你應該解釋你的答案 – Borodin
@Borodin,「因爲這是什麼返回你想要的」 – ikegami
改爲decode_content在答案,但仍然沒有好處。我打印了content_type以確認我獲得了image/jpeg。我猜這必須與網站呈現圖像的方式有關,但如果我直接用chrome下載到我的電腦並上傳到服務器,一切都很好。我已經能夠使用不同的URL結構來鏡像來自此網站的圖像。不知道我還能做什麼。我可以從服務器上拉取圖像,但無法讀取調整大小。 – chrisrth