Acme-Image-Stb
view release on metacpan or search on metacpan
lib/Acme/Image/Stb.pm view on Meta::CPAN
affix $lib, 'stbi_load', [ String, Pointer [Int], Pointer [Int], Pointer [Int], Int ] => Buffer;
affix $lib, 'stbi_write_png', [ String, Int, Int, Int, Buffer, Int ] => Int;
affix $lib, 'stbir_resize_uint8_linear', [ Buffer, Int, Int, Int, Buffer, Int, Int, Int, Int ] => Buffer;
# API
sub load_and_resize ( $input, $output, $scale ) {
my ( $w, $h, $ch ) = ( 0, 0, 0 );
# Load
my $img = stbi_load( $input, \$w, \$h, \$ch, 4 );
return undef if is_null($img);
# Calculate
my $nw = int( $w * $scale );
my $nh = int( $h * $scale );
my $out_buf = "\0" x ( $nw * $nh * 4 );
# Resize
my $res = stbir_resize_uint8_linear( $img, $w, $h, 0, $out_buf, $nw, $nh, 0, STBIR_RGBA );
return undef if is_null($res);
# Save
stbi_write_png( $output, $nw, $nh, 4, $out_buf, 0 );
}
}
1;
__END__
=pod
( run in 0.753 second using v1.01-cache-2.11-cpan-d80b1682f3f )