timmy icon indicating copy to clipboard operation
timmy copied to clipboard

When the timmy/generate_srcset_sizes is set to true the 'oversize' option is ignored

Open jeroenbraspenning opened this issue 3 years ago • 1 comments

I stumbled across an issue with the timmy/generate_srcset_sizes hook. When set to true, the system will automatically generate all responsive sizes. This works perfect, but not if you have the following oversize configuration:

'oversize' => array( 'allow' => false, 'style_attr' => false ) It should not generate sizes bigger than the source image, but it does. The function (generate_srcset_size, timmy.php, r864) which generates the sizes doesn't check the oversize settings. As a temporary workaround i did the following, which fixes it for now.

rule 904:

// Generate additional image sizes used for srcset.
if (isset($img_size['srcset'])) {
    foreach ($img_size['srcset'] as $srcset_size) {
        list($width, $height) = Helper::get_dimensions_for_srcset_size(
            $img_size['resize'],
            $srcset_size
        );
        
        // hacky fix to make sure that we are not generating image sizes
        // which are bigger that the max size of the image

        // create a cloned version of the $img_size array
        $cloned_img_size = $img_size;
        // add the "to be created" size
        $cloned_img_size['resize'] = array($width,$height);

        // put the img_size through the get_image_params function to make sure
        // it is checked against the "oversize" settings.
        // $width and $height will be overriden by the list() helper
        list(
            $file_src,
            $width,
            $height,
        ) = Timmy::get_image_params($timber_image, $cloned_img_size);
        
        // For the new source, we use the same $crop and $force values as the default image.
        self::resize($img_size, $file_src, $width, $height, $crop, $force);
    }
}

Thanks for your work!

jeroenbraspenning avatar Oct 01 '21 14:10 jeroenbraspenning

Hey @jeroenbraspenning

I think this is a duplicate of https://github.com/mindkomm/timmy/issues/36. Because I have to refactor quite a few things to get this right, it’s taking a little longer.

gchtr avatar Oct 05 '21 06:10 gchtr

This was fixed in the first beta for Timmy 1.0.0. The most current beta version is 1.0.0-beta.3. You can test it with that version.

gchtr avatar Jan 09 '23 07:01 gchtr