gecko-dev/cmd/xfe/icons/reducePalette

81 строка
2.0 KiB
Perl
Executable File

#!/usr/local/bin/perl
#
# The contents of this file are subject to the Netscape Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/NPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is mozilla.org code.
#
# The Initial Developer of the Original Code is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s):
# reducePalette
# Steve Lamm <slamm@netscape.com>
#
# Streamline colormap usage by re-aligning colors
# that are close to one another.
#
# This requires the netpbm image utilities.
#
# Usage: reducePalette <image1> [<image2> ..]
#
foreach $giffile ( @ARGV ) {
if ($#ARGV > 0) {
print STDERR "$0: reducing $giffile\n";
}
($dirpart, $filebase) = $giffile =~ m|(.*/)([^/]*).gif$|;
$tempppm = "${dirpart}tmp$$.$filebase.ppm";
$tempgif = "${dirpart}tmp$$.$filebase.gif";
$temptrans = "${dirpart}tmp$$.$filebase.trans.gif";
system("giftopnm < $giffile > $tempppm");
if ($? != 0) {
unlink $tempppm;
exit 0;
}
system("ppmtogif < $tempppm > $tempgif");
unlink $tempppm;
if ($? != 0) {
unlink $tempgif;
exit 0;
}
system("giftrans -t\"#ff00ff\" -g \"#7F7F7F=#808080\"< $tempgif > $temptrans");
unlink $tempgif;
if ($? != 0) {
unlink $temptrans;
exit 0;
} else {
open(diff,"diff $temptrans $giffile |")
|| die "Unable to diff file $temptrans and $giffile";
$foundDiff = 0;
while (<diff>) {
$foundDiff = 1;
}
if ($foundDiff) {
rename($temptrans, $giffile)
|| die "Unable to rename $temptrans to $giffile";
} else {
print STDERR "$0: $giffile already reduced, left unchanged\n";
unlink $temptrans;
}
}
1;
}