summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Friesel <derf@derf.homelinux.org>2009-04-16 13:31:33 +0200
committerDaniel Friesel <derf@derf.homelinux.org>2009-04-16 13:31:33 +0200
commit56aaf758eecf3fd86c21fbf14e4797165ba8f22f (patch)
tree0cc51ebf17601880d0b47db1fd641fc034c410ea
initial commit
-rwxr-xr-xinclude/gen-xhtml-thumbnails62
1 files changed, 62 insertions, 0 deletions
diff --git a/include/gen-xhtml-thumbnails b/include/gen-xhtml-thumbnails
new file mode 100755
index 0000000..3c64ea9
--- /dev/null
+++ b/include/gen-xhtml-thumbnails
@@ -0,0 +1,62 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use Image::Imlib2;
+
+my $directory = shift || '.';
+my $thumbdir = "$directory/.thumbs";
+my $indexfile = "$directory/index.xhtml";
+my ($file, $image, $thumb);
+my ($dx, $dy, $tx, $ty);
+$| = 1;
+open(my $index, '>', $indexfile);
+print $index <<ficken;
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
+ <link rel="stylesheet" type="text/css" href="foo.css"/>
+</head>
+<body><div>
+ficken
+
+if (! -d $thumbdir) {
+ mkdir($thumbdir) or die("cannot create $thumbdir: $!");
+}
+
+opendir(my $dirhandle, $directory) or die("Cannot open $directory: $!");
+print "Generating thumbnails [ - cached | + generated ]\n";
+foreach $file (readdir($dirhandle)) {
+ next unless ($file =~ /\.(png|jpe?g)$/i);
+
+print $index <<ficken;
+ <a href="$file"><img src=".thumbs/$file"/></a>
+ficken
+
+ if (-e "$thumbdir/$file") {
+ print '-';
+ next;
+ }
+ $image = Image::Imlib2->load($file);
+ ($dx, $dy) = ($image->width, $image->height);
+ if ($dx > $dy) {
+ $thumb = $image->create_scaled_image(150, 0);
+ } else {
+ $thumb = $image->create_scaled_image(0, 150);
+ }
+ $thumb->set_quality(60);
+ $thumb->save("$thumbdir/$file");
+ chmod(0644, "$thumbdir/$file");
+ print '+';
+}
+print "\n";
+
+print $index <<ficken;
+</div></body>
+</html>
+ficken
+
+close($index);
+chmod(0644, $indexfile);