dockapps/wmgrabimage/wmGrabImage/GrabImage

70 lines
1.9 KiB
Plaintext
Raw Normal View History

#!/usr/bin/perl
#
# Grabs an image on the WWW and resizes it (with antialiasing) down so that it can be
# displayed in a WindowMaker DockApp.
# Need to give it the URL of the image like so;
#
# GrabWeather http://whatever.com/image.gif
#
require "ctime.pl";
#
# Change to users home directory. We used to dump into /tmp
# but using home dir instead avoids multiple users interfering
# with one another. (Yeah, we could "unique-ize" the filenames, but
# this is easier for now...)
#
$home = (getpwuid($<))[7];
$ok = chdir() || chdir($home);
#
# Check to see if .wmGrabImage exists.
# If not, make it and move to it.
#
if ( !(-e ".wmGrabImage") ){
mkdir(".wmGrabImage", 0775);
}
chdir(".wmGrabImage");
$URL = $ARGV[0];
$Geometry = $ARGV[1];
$ImageName = $URL;
$ImageName =~ s/.*\/(.*)$/\1/;
if ($URL =~ /^file:\/\//) {
$ImagePath = $URL;
$ImagePath =~ s+file://(.*)+\1+;
system("cp $ImagePath $home/.wmGrabImage/$ImageName");
} else {
#
# I think some of these wget command line options may cause problems
# for some people? Dont know why...
#
$GrabCmd = "wget --proxy=off --passive-ftp --tries 0 -q -O $home/.wmGrabImage/$ImageName $URL";
system "$GrabCmd";
}
if (! ($Geometry eq "") ) {
system "convert -crop $Geometry $home/.wmGrabImage/${ImageName} $home/.wmGrabImage/${ImageName}.tmp.gif" ;
system "convert -geom 54x54 $home/.wmGrabImage/${ImageName}.tmp.gif ${home}/.wmGrabImage/${ImageName}.tmp.xpm";
} else {
system "convert -geom 54x54 $home/.wmGrabImage/${ImageName} ${home}/.wmGrabImage/${ImageName}.tmp.xpm";
}
system "cat ${home}/.wmGrabImage/${ImageName}.tmp.xpm | sed -e \"s/Transparent/Black/\" \> ${home}/.wmGrabImage/${ImageName}.xpm; rm ${home}/.wmGrabImage/${ImageName}.tmp.xpm";