]> git.sesse.net Git - pr0n/blobdiff - perl/Sesse/pr0n/Common.pm
Fix another bug relating to the "-1x-1" (ie. original size, but still with
[pr0n] / perl / Sesse / pr0n / Common.pm
index 027268a2c469faeeb2b5d232d91e619753a8b341..6f45d55d903186aa6dc489f208519fd98574887f 100644 (file)
@@ -35,7 +35,7 @@ BEGIN {
                require Sesse::pr0n::Config_local;
        };
 
-       $VERSION     = "v2.60";
+       $VERSION     = "v2.65";
        @ISA         = qw(Exporter);
        @EXPORT      = qw(&error &dberror);
        %EXPORT_TAGS = qw();
@@ -408,7 +408,7 @@ sub make_mipmap {
                my $large_enough = 1;
                for my $i (0..($#res/2)) {
                        my ($xres, $yres) = ($res[$i*2], $res[$i*2+1]);
-                       if ($xres > $new_mmwidth || $yres > $new_mmheight) {
+                       if ($xres == -1 || $xres > $new_mmwidth || $yres > $new_mmheight) {
                                $large_enough = 0;
                                last;
                        }
@@ -574,7 +574,14 @@ sub ensure_cached {
                        $img->Read('xc:white');
                                
                        my $info = Image::ExifTool::ImageInfo($fname);
-                       if (!make_infobox($img, $info, $r)) {
+                       if (make_infobox($img, $info, $r)) {
+                               $img->Quantize(colors=>16, dither=>'False');
+
+                               # Since the image is grayscale, ImageMagick overrides us and writes this
+                               # as grayscale anyway, but at least we get rid of the alpha channel this
+                               # way.
+                               $img->Set(type=>'Palette');
+                       } else {
                                # Not enough room for the text, make a tiny dummy transparent infobox
                                @$img = ();
                                $img->Set(size=>"1x1");
@@ -584,7 +591,7 @@ sub ensure_cached {
                                $height = 1;
                        }
                                
-                       $err = $img->write(filename => $cachename);
+                       $err = $img->write(filename => $cachename, quality => 90, depth => 8);
                        $r->log->info("New infobox cache: $width x $height for $id.jpg");
                        
                        return ($cachename, 'image/png');