Server IP : 3.128.248.115 / Your IP : 18.116.85.108 Web Server : Apache/2.4.41 (Ubuntu) System : Linux ip-172-31-33-233 5.15.0-1037-aws #41~20.04.1-Ubuntu SMP Mon May 22 18:18:00 UTC 2023 x86_64 User : www-data ( 33) PHP Version : 7.4.28 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /bin/ |
Upload File : |
#!/usr/bin/perl -w # Written by Bryan Henderson # Contributed to the public domain. use strict; use English; use Getopt::Long; use File::Temp "tempfile"; use File::Spec; use File::Copy; use Fcntl ":seek"; my ($TRUE, $FALSE) = (1,0); my ($opt_center, $opt_meancolor, $opt_meanpixel, $opt_floyd, $opt_spreadbrightness, $opt_spreadluminosity, $opt_mapfile); my $result = GetOptions( "center" => \$opt_center, "meancolor" => \$opt_meancolor, "meanpixel" => \$opt_meanpixel, "spreadbrightness" => \$opt_spreadbrightness, "spreadluminosity" => \$opt_spreadluminosity, "floyd|fs!" => \$opt_floyd, ); if (@ARGV > 2) { print(STDERR "This program takes at most 2 arguments. You specified ", 0+@ARGV, "\n"); exit(1); } if (@ARGV < 1) { print(STDERR "You must specify the number of colors as an argument.\n"); exit(1); } my $infile; my $ncolors = $ARGV[0]; if (@ARGV > 1) { $infile = $ARGV[1]; } else { $infile = "-"; } my $averageOpt; if (defined($opt_meanpixel)) { $averageOpt = "-meanpixel"; } elsif (defined($opt_meancolor)) { $averageOpt = "-meancolor"; } else { $averageOpt = "-center"; } my $spreadOpt; if (defined($opt_spreadluminosity)) { $spreadOpt = "-spreadluminosity"; } else { $spreadOpt = "-spreadbrightness"; } my ($mapfileFh, $mapfileSpec) = tempfile("pnmquantMapXXXX", SUFFIX => ".pnm", UNLINK => $TRUE, DIR => File::Spec->tmpdir()); # We'd like just to connect the file handle $mapfileFh to STDOUT, but # we can't figure out the Perl incantation to make that happen. # close($mapfileFh); open(OLDOUT, ">&STDOUT"); select(OLDOUT); # avoids Perl bug where it says we never use STDOUT open(STDOUT, ">", $mapfileSpec); &inputSTDIN($infile); my $maprc = system("pnmcolormap", $ncolors, $averageOpt, $spreadOpt); open(STDOUT, ">&OLDOUT"); seek(STDIN, 0, SEEK_SET); if ($maprc != 0) { print(STDERR "pnmcolormap failed, rc=$maprc\n"); exit(1); } else { my $floydOpt = $opt_floyd ? "-floyd" : "-nofloyd"; my $remaprc = system("pnmremap", "-mapfile=$mapfileSpec", $floydOpt); if ($remaprc != 0) { print(STDERR "pnmremap failed, rc=$remaprc\n"); exit(1); } } sub inputSTDIN { my $inputfile = shift; if ($inputfile eq "-") { unless (seek(STDIN, 0, SEEK_SET)) { my ($fileFh, $fileSpec) = tempfile("pnmquantSTDINXXXX", SUFFIX => ".pnm", UNLINK => $TRUE, DIR => File::Spec->tmpdir()); while (<STDIN>) { print($fileFh $_); } unless (seek($fileFh, 0, SEEK_SET)) { print(STDERR "pnmquant failed, seek of temporary input file failed! Errno = $ERRNO\n"); exit(1); } *FILEFH = *$fileFh; open(STDIN, "<&FILEFH"); tell(FILEFH); } } else { unless (open(STDIN, "<", $inputfile)) { print(STDERR "pnmremap failed, can't open $inputfile: $!\n"); exit(1); } } }