summaryrefslogtreecommitdiffstats
path: root/konify
diff options
context:
space:
mode:
authorFlorian Pritz <f-p@gmx.at>2009-05-21 20:33:48 +0200
committerFlorian Pritz <f-p@gmx.at>2009-05-21 20:33:48 +0200
commit55b2b41529c5ac3912969bf5468f7ad54cf61096 (patch)
treebe2f1d8b437c130cdccfe103b4c224e6dbf31dd1 /konify
parent5490782c34fbb1559c0c40723500eaee9935d116 (diff)
downloadbin-55b2b41529c5ac3912969bf5468f7ad54cf61096.tar.gz
bin-55b2b41529c5ac3912969bf5468f7ad54cf61096.tar.xz
2 new files; fix irssi notify script after suspend
Diffstat (limited to 'konify')
-rw-r--r--konify150
1 files changed, 150 insertions, 0 deletions
diff --git a/konify b/konify
new file mode 100644
index 0000000..b4388f3
--- /dev/null
+++ b/konify
@@ -0,0 +1,150 @@
+#! /usr/bin/perl
+
+# Copyright (C) 2009 Xyne
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+
+use strict;
+use warnings;
+
+use Image::Magick;
+
+my $OPTIONS = {
+ # the output file (file extension determines type))
+ '--file' => 'img.png',
+
+ # background color (grid)
+ '--bg' => '#050505',
+
+ # image to overlay
+ '--image' => undef,
+
+ # palette for tiles (imagemagick colors)
+ '--palette' => '#0f0f0f #101010 #121212 #0c0c0c #111111',
+
+ # how to overlay image (0:normally, 1+2:blocky)
+ '--blocky' => 0,
+
+ # size of final image
+ '--size' => undef,
+
+ # size of tiles
+ '--tile' => 7,
+
+ # gravity of overlaid image (imagemagick parameter)
+ '--gravity' => 'Center'
+};
+
+my $option;
+foreach my $arg (@ARGV)
+{
+ if (substr($arg,0,1) eq '-')
+ {
+ $option = $arg;
+ }
+ elsif (defined($option))
+ {
+ $OPTIONS->{$option} = $arg;
+ }
+}
+
+
+my $width;
+my $height;
+if (defined($OPTIONS->{'--size'}) and $OPTIONS->{'--size'} =~ m/^(\d+)x(\d+)$/)
+{
+ $width = $1;
+ $height = $2;
+}
+else
+{
+ print "error: no size given\nusage: \"--size <width>x<height>\"\n";
+ exit 1;
+}
+my @palette = split(/\s+/,$OPTIONS->{'--palette'});
+my $file = $OPTIONS->{'--file'};
+my $bg = $OPTIONS->{'--bg'};
+
+my $image = Image::Magick->new();
+$image->Set(size=>"${width}x${height}");
+$image->ReadImage('xc:none');
+
+my $img = $OPTIONS->{'--image'};
+my $logo = Image::Magick->new();
+if (defined($img))
+{
+ $logo->Set(background=>'none');
+ $logo->ReadImage($img);
+}
+
+my $gravity = $OPTIONS->{'--gravity'};
+$image->Composite(image=>$logo,gravity=>$gravity) if $OPTIONS->{'--blocky'} > 0 and defined($img);
+my $f = $OPTIONS->{'--tile'};
+my $n = scalar(@palette);
+my $prog = 0;
+my $total = int($width*$height/($f**2));
+my $cols = `tput cols` - 2;
+system('tput civis');
+
+for (my $i=0;$i<$width/$f;$i++)
+{
+ for (my $j=0;$j<$height/$f;$j++)
+ {
+ my ($x1,$y1) = ($i*$f,$j*$f);
+ my ($x2,$y2) = ($x1+$f-2,$y1+$f-2);
+
+ my $r = int(rand($n));
+ my $color = $palette[$r];
+
+ if ($OPTIONS->{'--blocky'} > 0 and defined($img))
+ {
+ my ($red,$green,$blue,$alpha) = (0,0,0,0);
+ for (my $k=$x1;$k<=$x2;$k++)
+ {
+ for (my $l=$y1;$l<=$y2;$l++)
+ {
+ my ($r,$g,$b,$a) = $image->GetPixel(y=>$l,x=>$k,channel=>'All');
+ $red += $r;
+ $green += $g;
+ $blue += $b;
+ $alpha += $a;
+ }
+
+ }
+ if ($alpha/(($f-1)**2) < 0.5)
+ {
+ my $d = ($f-1)**2;
+ $d -= $alpha if $OPTIONS->{'--blocky'} > 1;
+ $color = sprintf("rgba(%d,%d,%d,1)",int(0xFF*$red/$d),int(0xFF*$green/$d),int(0xFF*$blue/$d));
+ }
+ }
+ my ($m,$n) = ($x2+1,$y2+1);
+ $image->Draw(fill=>$bg, primitive=>'rectangle', points=>"$x2,$y1 $m,$n");
+ $image->Draw(fill=>$bg, primitive=>'rectangle', points=>"$x1,$y2 $m,$n");
+ $image->Draw(fill=>$color, primitive=>'rectangle', points=>"$x1,$y1 $x2,$y2");
+
+ $|++;
+ $prog++;
+ my $disp = int($prog*$cols/$total);
+ $disp = $cols if $disp>$cols;
+ print "\r[".('=' x $disp).(' ' x ($cols-$disp)).']';
+ }
+}
+system('tput cnorm');
+
+$image->Composite(image=>$logo,gravity=>$gravity) if $OPTIONS->{'--blocky'} < 1 and defined($img);
+$image->Write(filename=>$file);
+print "\nsaved image as $file\n";