Jeder Webpublisher kennt den Stress, wenn er massenweise Fotos für’s Web skalieren soll, womöglich noch mit einem Wasserzeichen versehen, damit jeder weiß woher die Bilder stammen?
Bei einer handvoll Bildern ist das ja noch zu Fuß zu erreichen, bei 15 Bildern wird es mühselig ab 30+ wird das dann richtig ekelig. Wir haben doch alle besseres zu tun als stundenlang am Bildbearbeitungsprogram zu sitzen, oder?
Mit folgendem kleinen Perlscript in Verbindung mit ImageMagick lassen sich zahlreiche JPEGs skalieren und mit einem persönlichen Wasserzeichentext versehen.
Vielleicht hat ja noch jemand Spaß dran
#!/usr/bin/perl my $dest_size = '1024'; # Destination max size my $watermark_text = "some nifty watermarktext"; my $identify_bin = '/usr/bin/identify'; my $convert_bin = '/usr/bin/convert'; my $composite_bin = '/usr/bin/composite'; my %imageinfo = (); my $cmd = ""; $cmd = "$identify_bin -format \"\%f: \%wx\%h\\n\" ./*.jpg"; printf "\n*** Process started ***\n"; printf "\tGetting filenames and geometry of all jpg (*.jpg) in current dir (may take some time) ....."; open (IM_IDENTIFY, "$cmd|"); while (<IM_IDENTIFY>){ chomp $_; if ($_ ne "") { $_ =~ /(.+): (.+)x(.+)/; $imageinfo{"$1"} = { "w" => $2, "h" => $3} } } close (IM_IDENTIFY); print " done.\n"; printf "\tCreating 'web' directory (if it doesn't exist)..."; unless(-d "web"){ mkdir "web" or die "Could not create 'web' directory: $!"; } print " done.\n"; printf "\tCreating watermark image..."; $cmd = "$convert_bin " . "-size 370x65 " . "xc:transparent ". "-font Bookman-DemiItalic ". "-pointsize 34 ". "-draw \"text 25,60 \'$watermark_text\'\" ". "-channel RGBA ". "-gaussian 0x3 ". "-fill darkred ". "-stroke black ". "-draw \"text 20,55 \'$watermark_text\'\" ". "web/watermark.png"; system($cmd) == 0 or die "Could not create watermark image: $!\n"; print " done.\n"; printf "\tResizing images \n"; while (($key,$value) = each %imageinfo) { print "\t\t$key: "; $arg = 'x'; $arg = '' if($imageinfo{$key}{'w'} > $imageinfo{$key}{'h'}); print "..."; $cmd = "$convert_bin -resize $arg$dest_size $key web/$key"; system ($cmd) == 0 or die "Could not resize Image: $!\n"; print " watermarking ...."; $cmd = "$composite_bin -gravity SouthEast web/watermark.png web/$key web/$key"; system ($cmd) == 0 or die "Could not apply watermark with '$cmd': $!\n"; print " done!\n"; } printf "\tCleaning up...\n"; printf "\t\tRemoving watermark image..."; unlink("web/watermark.png") or die "Couldn't unlink web/watermark.png: $!"; printf "done!\n"; print "\n*** Process finished ***\n";
*** Process started *** Getting filenames and geometry of all jpg (*.jpg) in current dir (may take some time) ..... done. Creating 'web' directory (if it doesn't exist)... done. Creating watermark image... done. Resizing images dsc_0898.jpg: ... watermarking .... done! dsc_0913.jpg: ... watermarking .... done! Cleaning up... Removing watermark image...done! *** Process finished ***
No related posts.
Related posts brought to you by Yet Another Related Posts Plugin.
