We are giving an example for convert normal image to webp image format programmatically. Here all code/examples are already used in our projects.
Example:
use Drupal\image\Entity\ImageStyle;
use Drupal\media\Entity\Media;
use Drupal\responsive_background_image\ResponsiveBackgroundImage;
if ($tab_img = $tab_entity->get('field_image')->getValue()) {
$tab_img = array_shift($tab_img);
$mid = $tab_img['target_id'];
$media = Media::load($mid);
$fid = $media->field_image->target_id;
// if you want simple image url..
$style = 'max_160w'; //pass image format
$url = content_asset_image_url($fid, $style);
$variables['tab_titles'][$tab['target_id']]['icon'] = $url;
// if you want image convert into webp image format..
$file = File::load($fid);
$uri = $file->getFileUri();
$variables['tab_titles'][$tab['target_id']]['icon'] = [
'#theme' => 'responsive_image',
'#responsive_image_style_id' => 'responsive_asset_300x300', //pass responsive image format
'#alt' => 'Resource Content Asset',
'#uri' => $uri,
// Add `#attributes` key with alt text.
'#attributes' => [
'data-lazy'=> TRUE,
],
];
}
// Content Asset function to get Image URL
function content_asset_image_url($file_id, $style_choice) {
$file = File::load($file_id);
$image_uri = $file->getFileUri();
$style = ImageStyle::load($style_choice);
$url = $style->buildUrl($image_uri);
return $url;
}
Note: If have any suggestions or issue regarding 'How to convert image in webp format programmatically?' then you can ask by comments.