]> git.sesse.net Git - pr0n/blobdiff - perl/Sesse/pr0n/Image.pm
Add rudimentary AVIF support.
[pr0n] / perl / Sesse / pr0n / Image.pm
index f12a15891792ed1ba0e195e815c4c157df2d1b29..13d9ee5e3ae488d6cf7f9393fa589240c34ab0d5 100644 (file)
@@ -58,16 +58,20 @@ sub handler {
        $dbwidth = $ref->{'width'};
        $dbheight = $ref->{'height'};
 
+       my $res = Plack::Response->new(200);
+
        # Scale if we need to do so
        my ($fname, $mime_type);
        if ($infobox) {
                ($fname, $mime_type) = Sesse::pr0n::Common::ensure_infobox_cached($r, $filename, $id, $dbwidth, $dbheight, $dpr, $xres, $yres);
        } else {
-               ($fname, $mime_type) = Sesse::pr0n::Common::ensure_cached($r, $filename, $id, $dbwidth, $dbheight, $xres, $yres);
+               my $accept = $r->header('Accept');
+               my $avif_ok = (defined($accept) && $accept =~ /(^|,)image\/avif($|,|;)/);
+               ($fname, $mime_type) = Sesse::pr0n::Common::ensure_cached($r, $avif_ok, $filename, $id, $dbwidth, $dbheight, $xres, $yres);
+               $res->header('Vary' => 'Accept');
        }
 
        # Output the image to the user
-       my $res = Plack::Response->new(200);
 
        if (!defined($mime_type)) {
                $mime_type = Sesse::pr0n::Common::get_mimetype_from_filename($filename);