App-PNGCrush
view release on metacpan or search on metacpan
lib/App/PNGCrush.pm view on Meta::CPAN
package App::PNGCrush;
use warnings;
use strict;
our $VERSION = '0.002';
use Carp;
use Proc::Reliable;
use Devel::TakeHashArgs;
use base 'Class::Data::Accessor';
my %Valid_Options = qw(
already_size -already
bit_depth -bit_depth
background -bkgd
brute_force -brute
color_type -c
color_counting -cc
output_dir -d
double_image_gamma -dou
output_extension -e
filter -f
fix_fatal -fix
output_force -force
gamma -g
itxt -itxt
level -l
method -m
maximum_idat -max
no_output -n
no_color_counting -no_cc
plte_length -plte_len
remove -rem
replace_gamma -replace_gamma
resolution -res
save_unknown -save
srgb -srgb
text -text
transparency -trns
window_size -w
strategy -z
insert_ztxt -zitxt
ztxt -ztxt
verbose -v
);
my %No_Arg_Options = map { $_ => 1 } qw(
brute_force
color_counting
double_image_gamma
fix_fatal
output_force
no_output
no_color_counting
save_unknown
verbose
);
__PACKAGE__->mk_classaccessors (
qw( proc error results ),
keys %Valid_Options
);
sub new {
my $self = bless {}, shift;
get_args_as_hash( \@_, \my %args, { maxtime => 300 } )
or croak $@;
my $proc = Proc::Reliable->new;
$proc->$_( $args{$_} ) for keys %args;
$self->proc( $proc );
return $self;
lib/App/PNGCrush.pm view on Meta::CPAN
my $ret_ref = $crush->run('some.png')
or die $crush->error;
If C<run> failed it will return either C<undef> or an empty list depending
on the context and the reason for failure will be available via C<error()>
method. Takes no arguments, returns a human parsable error message
explaining why C<run> failed.
=head2 C<results>
my $results_ref = $crush->results;
Must be called after a successful call to C<run()>. Takes no arguments,
returns the exact same hashref last call to C<run()> returned.
=head2 C<set_options>
$crush->set_options(
qw( -d OUT_DIR -brute 1 ),
remove => [ qw( gAMA cHRM sRGB iCCP ) ],
);
Always returns a true value. Sets the options with which to run
C<pngcrush>. As argument takes a list of key/value pairs of
either standard C<pngcrush> options or more verbose names this module
offers (see below). If you want to B<repeat> certain option pass values
as B<an arrayref>, thus if on a command line you'd write
C<< pngcrush -rem gAMA -rem cHRM -rem sRGB ... >> you'd use
C<< ->set_options( '-rem' => [ qw( gAMA cHRM sRGB iCPP ) ] ) >>.
B<Note:> if C<pngcrush> option does not take an argument you B<must>
give it a value of C<1> when setting it via C<set_options()> method.
For C<-v> option you can set it to value C<2> to repeat twice
(aka uber verbose). B<Same applies> to individual option setting methods.
B<Note 2:> call to C<set_options()> will call C<reset_options()> method
(see below) before setting any of your options, thus whatever you
don't specify will not be passed to C<pngcrush>
=head2 C<reset_options>
$crush->reset_options;
Always returns a true value, takes no arguments. Instructs the object
to reset all C<pngcrush> options.
=head2 individual option methods
Module provides methods to set (almost) all C<pngcrush> options individually
You'd probably would want to use C<set_options()> method (see above)
in most cases. See C<set_options()> method which describes how to
repeat options and how to set options which take no arguments in
C<pngcrush>. The following is the list of methods (on the left) and
corresponding C<pngcrush> options they set (on the right); some
options were deemed useless to the module and were not included
(this is as of C<pngcrush> version 1.6.4):
already_size -already
bit_depth -bit_depth
background -bkgd
brute_force -brute
color_type -c
color_counting -cc
output_dir -d
double_image_gamma -dou
output_extension -e
filter -f
fix_fatal -fix
output_force -force
gamma -g
itxt -itxt
level -l
method -m
maximum_idat -max
no_output -n
no_color_counting -no_cc
plte_length -plte_len
remove -rem
replace_gamma -replace_gamma
resolution -res
save_unknown -save
srgb -srgb
text -text
transparency -trns
window_size -w
strategy -z
insert_ztxt -zitxt
ztxt -ztxt
verbose -v
See C<pngcrush> manpage (C<man pngcrush> or C<pngcrush -v>)
for descriptions of these options.
Out of those listed above the following C<pngcrush> options do not take
arguments,
thus to set these you'd need to pass C<1> as an argument to the option
setting method (except for C<verbose> which can take a value of C<2> to
indicate double verboseness (equivalent to passing C<-v -v> to
C<pngcrush>)
brute_force
color_counting
double_image_gamma
fix_fatal
output_force
no_output
no_color_counting
save_unknown
verbose
=head2 C<proc>
my $proc_reliable_obj = $crush->proc;
$crush->proc( Proc::Reliable->new );
Returns a currently used L<Proc::Reliable> object used under the hood,
thus you could dynamically set arguments as
C<< $crush->proc->max_time(300) >>. When called with an argument
it must be a C<Proc::Reliable> object which will replace the currently
( run in 2.655 seconds using v1.01-cache-2.11-cpan-8f98c5d2c55 )