GD
view release on metacpan or search on metacpan
demos/png2jpeg.pl view on Meta::CPAN
# bad jpeg quality: https://rt.cpan.org/Ticket/Display.html?id=48558
# with some libgd.
use GD;
my $infile = shift;
-e $infile or die $!;
my $png = GD::Image->newFromPng($infile) or die $!;
my $jpgImg = GD::Image->newTrueColor( $png->width, $png->height);
my $bg = $jpgImg->colorAllocate(80,10,10);
$jpgImg->fill(0,0,$bg);
$jpgImg->copy($png, 0,0,0,0, $png->width, $png->height);
my $outfile = $infile;
$outfile =~ s/.png/.jpeg/i;
$infile eq $infile or $outfile .= ".jpeg";
open my $f, '>', $outfile or die $!;
print $f $jpgImg->jpeg(80); # quality 80%
close $f;
( run in 1.051 second using v1.01-cache-2.11-cpan-df04353d9ac )