summaryrefslogtreecommitdiffstats
path: root/giflib-4.1.6/util/gifburst
diff options
context:
space:
mode:
Diffstat (limited to 'giflib-4.1.6/util/gifburst')
-rwxr-xr-xgiflib-4.1.6/util/gifburst75
1 files changed, 75 insertions, 0 deletions
diff --git a/giflib-4.1.6/util/gifburst b/giflib-4.1.6/util/gifburst
new file mode 100755
index 0000000..a11de76
--- /dev/null
+++ b/giflib-4.1.6/util/gifburst
@@ -0,0 +1,75 @@
+#!/usr/bin/perl
+#
+# Split a GIF image into four or six pieces, dividing in half horizontally
+# and into halves or thirds vertically.
+#
+# The -s option controls the number of pieces. The -p option controls the
+# amount of overlap (in pixels) at the edges of pieces.
+
+# Set to flush on print.
+$| = 1;
+
+require 'getopts.pl';
+
+# How many pieces?
+$split = 4;
+&Getopts("s:p:");
+$split = $opt_i if $opt_i;
+$overlap = $opt_p if $opt_p;
+
+$nm=$ARGV[0];
+print "Bursting image $nm.gif...\n";
+
+$stats=`giftext $nm.gif | grep Width | head -n1`;
+$stats =~ /Width = ([0-9]+), Height = ([0-9]+)/;
+$width=$1;
+$height=$2;
+print "Width is $width, height $height\n";
+
+$overlap = 20;
+
+if ($split == 6)
+{
+ $a = int($width / 2) + $overlap;
+ $b = int($width / 2) - $overlap;
+ $c = int($width - 1);
+ $d = int($height / 3) - $overlap;
+ $e = int($height / 3) * 2 - $overlap;
+ $f = int($height / 3) + $overlap;
+ $g = int($height / 3) * 2 + $overlap;
+ $h = int($height - 1);
+
+ $regions[1] = "0 0 $a $f";
+ $regions[2] = "0 $d $a $g";
+ $regions[3] = "0 $e $a $h";
+ $regions[4] = "$b 0 $c $f";
+ $regions[5] = "$b $d $c $g";
+ $regions[6] = "$b $e $c $h";
+}
+elsif ($split == 4)
+{
+ $a = int($width / 2) + $overlap;
+ $b = int($width / 2) - $overlap;
+ $c = int($width - 1);
+ $d = int($height / 2) - $overlap;
+ $e = int($height / 2) + $overlap;
+ $f = int($height - 1);
+
+ $regions[1] = "0 0 $a $e";
+ $regions[2] = "0 $d $a $f";
+ $regions[3] = "$b 0 $c $e";
+ $regions[4] = "$b $d $c $f";
+}
+else
+{
+ die("I don't know how to make that many pieces.\n");
+}
+
+for ($i = 1; $i <= $split; $i++)
+{
+ print "${nm}-${i}: ${regions[$i]}\n";
+ system("gifclip -i $regions[$i] ${nm}.gif >${nm}-${i}.gif");
+}
+
+print "$nm done\n"
+