/** * Returns the sizes for a given Kirby file * * Uses 'responsiveimages.sizes' option to let site owners overwrite the defaults * * @param File $file * @param int $width Optional. Use when you want to force image to a certain width (retina/high-PPi usecase) * * @return array */ function kirby_get_sizes_array($file, $width = null) { // let users overwrite the sizes via config $sizes_arr = kirby()->option('responsiveimages.sizes'); // let users overwrite the native image size via attribute $img_width = (empty($width) ? $file->width() : $width) . 'px'; // default to the image width if (empty($sizes_arr)) { $sizes_arr = array(array('size_value' => '100vw', 'mq_value' => $img_width, 'mq_name' => 'max-width'), array('size_value' => $img_width)); } else { $sizes_arr = array_map(function ($value) use($img_width) { // allow config rules relative to native image size return str_replace('$img_width', $img_width, $value); }, $sizes_arr); } return $sizes_arr; }