зеркало из https://github.com/mozilla/gecko-dev.git
77 строки
2.0 KiB
Perl
Executable File
77 строки
2.0 KiB
Perl
Executable File
#!/usr/local/bin/perl
|
|
#
|
|
# The contents of this file are subject to the Netscape Public License
|
|
# Version 1.0 (the "NPL"); you may not use this file except in
|
|
# compliance with the NPL. You may obtain a copy of the NPL at
|
|
# http://www.mozilla.org/NPL/
|
|
#
|
|
# Software distributed under the NPL is distributed on an "AS IS" basis,
|
|
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
|
# for the specific language governing rights and limitations under the
|
|
# NPL.
|
|
#
|
|
# The Initial Developer of this code under the NPL is Netscape
|
|
# Communications Corporation. Portions created by Netscape are
|
|
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
|
# Reserved.
|
|
|
|
# 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;
|
|
}
|