зеркало из https://github.com/mozilla/gecko-dev.git
81 строка
2.0 KiB
Perl
Executable File
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;
|
|
}
|