Deel dit artikel:

Blog
Aug 22, 20238 min read

Drupal 9 afbeelding converteren naar WebP formaat

Vasil Boychev

Gebiedsmanager - Benelux

Drupal 9 afbeelding converteren naar WebP formaat

Wat is WebP en wat zijn de voordelen?

JPG is lange tijd de standaard geweest voor afbeeldingsgegevens op het web. Echter, in 2013 was Google (samen met een groep andere open source ontwikkelaars) in staat om WebP te ontwikkelen, een nieuwe encodertechniek voor afbeeldingen die bedoeld was om afbeeldingen kleiner te comprimeren dan JPG met behoud van beeldkwaliteit.

WebP is een moderne afbeeldingsindeling voor het web die meer compressie zonder kwaliteitsverlies biedt. Webmasters en webontwikkelaars kunnen WebP gebruiken om kleinere, rijkere afbeeldingen te maken die sneller laden op het web.

In vergelijking met PNG's zijn WebP lossless afbeeldingen 26% kleiner. Bij dezelfde SSIM kwaliteitsindex zijn WebP lossy afbeeldingen 25-34 procent kleiner dan gelijkwaardige JPEG-afbeeldingen.

Transparantie wordt ondersteund door verliesvrije WebP tegen een kostprijs van slechts 22 procent meer gegevens. Wanneer RGB-compressie met verlies acceptabel is, biedt WebP met verlies ook transparantie, wat resulteert in bestandsgroottes die doorgaans drie keer kleiner zijn dan PNG.

Lees Veelgestelde vragen over WebP.

Hoe implementeer ik WebP-indeling voor alle afbeeldingen op een Drupal 9-website?

Er zijn 3 belangrijke stappen die je moet volgen:
  1. Configureer de ondersteuning voor het webp-formaat van de server.
  2. Imagemagick en WebP Drupal-modules installeren en configureren.
  3. Effect "Omzetten naar WEBP" toevoegen aan relevante afbeeldingsstijlen.

1. Configureer de ondersteuning van het WebP-formaat op de server.

We moeten ervoor zorgen dat de server WebP ondersteunt. Voor ons doel kunnen we twee verschillende php extensies gebruiken, imagick en gd. Ze ondersteunen allebei het converteren van afbeeldingen naar WebPformat. Het verschil zit alleen in de configuratie in de volgende stappen. Eerst behandelen we de gd extensie en daarna bekijken we imagick.

GD extensie:
Allereerst moet u uw php.ini bestand controleren. U moet het volgende vinden:

extensie=php_gd2.dll

of

xtension=php_gd.dll.

Start daarna je server opnieuw op om de wijzigingen toe te passen. Als je deze extensie niet kunt vinden in je php.ini bestand, moet je deze toevoegen aan je omgeving.

Het ziet er als volgt uit:

sudo apt-get update 
sudo apt-get install php-gd

GD extensie: DDEV omgeving moet je DDEV Hook configureren. Je kunt hook post start instellen door extra instellingen toe te voegen in .ddev/config.yaml.

hooks:
post-start:

- exec: sudo apt-get update 
- exec: sudo apt-get install php-gd

Door hooks te gebruiken kun je Linux commando's uitvoeren in de DDEV omgeving.

Als je de stappen in deze sectie correct hebt uitgevoerd, zie je een nieuw blok in phpinfo().

Het ziet er als volgt uit:

Dit gedeelte laat zien dat de gd-extensie met succes is geïnstalleerd. Je moet hier controleren of WebP-ondersteuning is ingeschakeld.

GD

Imagick:
Imagick is een andere bibliotheek die je kunt gebruiken voor het manipuleren van afbeeldingen. De installatie van Imagick is gebaseerd op wat we in de vorige sectie hebben gezien.

sudo apt-get update 
sudo apt-get install php-imagick

Of bijvoorbeeld DDEV:

hooks:
post-start:

- exec: sudo apt-get update 
- exec: sudo apt-get install php-imagick

Je kunt controleren of imagick succesvol is geïnstalleerd met het onderstaande commando

php -m | grep imagick

Na de laatste manipulatie moet je je webserver opnieuw opstarten, waarschijnlijk apache.

Als alles op de juiste manier wordt gedaan, zie je iets als:

imagick

Opmerking:

In de secties die hierboven zijn beschreven, moet je controleren of WEBP Support is ingeschakeld voor PHP. Als u geen WebP-ondersteuning of -indeling kunt vinden in de vorige sectie, moet u deze handmatig installeren via dit commando:

sudo apt-get update 
sudo apt-get install -y webp

En nogmaals - start uw webserver opnieuw op.

2. Imagemagick en WebP Drupal-modules installeren en configureren.

Tot zover alles goed, we hebben al een geconfigureerde omgeving. Ik hoop dat je de vorige stap zonder problemen hebt voltooid. Zo niet - dan graag herhalen!

Vervolgens bekijken we twee modules die we moeten installeren en configureren om imageconversie in te stellen.

Goed, laten we doorgaan met het installeren van de twee modules die we nodig hebben. De eerste - Imagemagick.

composer vereist drupal/imagemagick

drush en imagemagick -y

En de tweede - WebP.

composer vereist drupal/webp

drush en webp -y

Na het installeren en inschakelen van alle modules voert u drush cr uit om de cache opnieuw op te bouwen.

De WebP-module biedt de extensie WEBP converter in de afbeeldingsstijleffecten, die we verderop zullen tonen. Er zijn geen configuraties nodig voor de WebP-module. In plaats daarvan configureren we de module ImageMagick.

De ImageMagick module heeft twee manieren om te configureren. We zullen beide in deze sectie behandelen. In de vorige sectie heb je een php-bibliotheek gekozen voor het manipuleren van afbeeldingen gd/imagick, op dit punt moet je de imagemagick-module op de juiste manier configureren.

Eerst bekijken we de configuratiestappen van imagick:

Navigeer naar: /admin/config/media/image-toolkit

Als je de Imagick-bibliotheek kiest, moet je de eerste optie ImageMagick image toolkit kiezen. Je moet ook de afbeeldingskwaliteit instellen.

De optie Afbeeldkwaliteit verlaagt de afbeeldingskwaliteit tot het door u gekozen percentage. Merk op dat als je de kwaliteit van de afbeelding te veel verlaagt, de afbeelding er niet goed uit zal zien. Je zult hiermee moeten spelen.

Je moet ook een pad instellen naar de map imagiMagick bin die de module zal gebruiken om afbeeldingen te converteren. Je kunt de extensie downloaden op basis van je besturingssysteem. Pak daarna alles uit deze map uit op de gewenste locatie op je server. Voer het pad naar de bin map in het image toolkit veld "Path to the package executable" in en dat is alles.

image toolkit page

In de volgende stap moeten we de afbeeldingsformaten instellen die we zullen gebruiken. Merk op dat je de afbeeldingsformaten die je wilt gebruiken kunt in- of uitschakelen.

image formats page

Laten we nu eens kijken hoe we imagemagick kunnen configureren met GD2 extensie:

Als je gd processor kiest voor manipulatie met afbeeldingen, hoef je alleen maar "GD2 image manipulation toolkit" in te stellen bij image toolkit options.

image toolkit settings

Vergeet niet om drush cr uit te voeren na het toepassen van de module-instellingen om de drupal-cache opnieuw op te bouwen.

3. Voeg het effect "Omzetten naar WEBP" toe aan relevante afbeeldingsstijlen.

Oké, we hebben al WebP-ondersteuning op onze server, nu moeten we het converteren van afbeeldingen naar WebP-formaat instellen door converters toe te voegen in alle afbeeldingsstijlen.

Open : /admin/config/media/image-styles, en maak een nieuwe afbeeldingsstijl.
 

image styles

En voer een naam in, bijvoorbeeld "Afbeeldingsproces".

image style naming

En klik op Nieuwe stijl maken.

In deze nieuwe afbeeldingsstijl moeten we een converter maken voor onze afbeeldingen.

Selecteer Converteren in de vervolgkeuzelijst en klik op Toevoegen.

image style name

Selecteer op de volgende pagina de optie WebP uit de vervolgkeuzelijst en klik op Effect toevoegen. De reeds geïnstalleerde WebP-module geeft ons hier de WEBP-extensie:

convert an image between extensions

Als je het nieuwe effect wilt toepassen op bestaande afbeeldingsstijlen, gebruik dan dezelfde aanpak.

Bonus: Pas een nieuwe afbeeldingsstijl toe in Twig

Op dit punt moeten we begrijpen dat het WebP-formaat alleen wordt toegepast op afbeeldingen die een afbeeldingsstijl gebruiken. In alle andere gevallen moeten we de afbeeldingsstijl handmatig toepassen in de code. Bijvoorbeeld - in twig. Hoogstwaarschijnlijk gebruiken de afbeeldingen die daar geïmplementeerd zijn geen afbeeldingsstijl. Gelukkig kunnen we een bepaalde afbeeldingsstijl rechtstreeks in Twig toepassen.

Om afbeeldingen op te vangen die we hebben toegevoegd in een stijl als achtergrond of in een twig-sjabloon, moeten we de afbeeldingsstijl instellen met de twig-functie image_style() met behulp van de afbeeldingsstijl 'image_process' die we eerder hebben gemaakt. Let op: we moeten de naam van de afbeeldingsstijlmachine in de image_style()-functie plaatsen.

Om de machinenaam te vinden van je afbeeldingsstijl die we al hebben gemaakt, moet je afbeeldingsstijl openen in het Drupal 9 adminpaneel en kijken naar de url.

Je zult iets zien als:

Het laatste argument in url is de naam van je afbeeldingsstijlmachine die je kunt gebruiken als parameter voor image_style().

style machine name

Als we een afbeeldingsstijl willen toevoegen in css in twig achtergrond, zou het er als volgt uitzien:

achtergrond-afbeelding: url({{'public://image_folder/image.jpg' | image_style('image_process')}});

Om de map met afbeeldingen te krijgen, moet je de public:// variabele gebruiken die de openbare bestandsbestemming vertegenwoordigt, meestal is dit 'sites/default/files'.

Of als je een afbeeldingsstijl wilt toevoegen aan twig field uri, zou het er zo uitzien:

achtergrond-afbeelding: url('{{ file_url(content.field_image.0['#media'].field_media_image.entity.fileuri | image_style('image_process')) }}');

Opmerking:

Als je dit wilt gebruiken met een twig mediaveld, moet je de uri van het mediaveld ophalen.

Conclusie

WebP is in staat om datacompressie naar een nieuw niveau te tillen dankzij de toevoeging van een voorspellingsmodus aan het JPG-proces, waardoor het duidelijk te zien is hoe het beter kan presteren dan zijn JPG-gebaseerde tegenhanger. En we hebben de resultaten om het te bewijzen

Voor

before image size

Na

after image size

Voor

before performance result

After
after performance result

ABONNEER U OP ONZE NIEUWSBRIEF

Deel dit artikel:

ABONNEER U OP ONZE NIEUWSBRIEF

Verwante Blog Artikelen

    Bouwen aan een goed presterend Agile team: Onze bewezen aanpak

    Blog

    Bouwen aan een goed presterend Agile team: Onze bewezen aanpak

    Ontdek hoe we goed presterende Agile-teams bouwen door duidelijke rollen te definiëren, samenwerking te stimuleren en flexibele tools te gebruiken.

    Geschreven door Svetoslava Angelova
    Aug 27, 20249 min read
    Drupal 11: Wat kunt u verwachten? Uitgebreide gids voor nieuwe functies en verbeteringen

    Blog

    Drupal 11: Wat kunt u verwachten? Uitgebreide gids voor nieuwe functies en verbeteringen

    Drupal 11 is uit! Ontdek in dit artikel de spannende functies en verbeteringen. Upgrade nu en herdefinieer je digitale strategie met de deskundige ondersteuning van Bulcode.

    Geschreven door Svetoslava Angelova
    Aug 05, 20247 min read
    Single Directory-onderdelen in Drupal core: Een uitgebreid overzicht

    Blog

    Single Directory-onderdelen in Drupal core: Een uitgebreid overzicht

    Ontdek hoe Single Directory Components (SDC) in Drupal Core het ontwikkelproces stroomlijnen door componentgerelateerde bestanden in een enkele map in te kapselen. Leer meer over de voordelen van SDC's en volg een stap-voor-stap handleiding om ze te implementeren in uw Drupal-projecten.

    Geschreven door Nikolay Tsekov
    Aug 07, 20244 min read
    Rollen in Scrum

    Blog

    Rollen in Scrum

    Scrum rollen en hoe je ze in je organisatie kunt inpassen.

    Geschreven door Svetoslava Angelova
    Aug 22, 20234 min read
    Scrum evenementen

    Blog

    Scrum evenementen

    Scrum definieert verschillende gebeurtenissen (soms ceremonies genoemd) die binnen elke sprint plaatsvinden: sprintplanning, dagelijkse scrum, sprint review en sprint retrospective.

    Geschreven door Svetoslava Angelova
    Aug 22, 20233 min read
    Scrum artefacten

    Blog

    Scrum artefacten

    Bij softwareontwikkeling verwijst de term "artefact" naar informatie die belanghebbenden en het scrumteam gebruiken om een product te beschrijven dat wordt ontwikkeld.

    Geschreven door Svetoslava Angelova
    Aug 22, 20232 min read
    Drupal zonder kop met Next.js - eenvoudig voorbeeld

    Blog

    Drupal zonder kop met Next.js - eenvoudig voorbeeld

    De laatste tijd is de trend in webontwikkeling in het algemeen, en dus ook in Drupal-ontwikkeling, om de technologie headless te gebruiken. De laatste tijd is de trend in webontwikkeling in het algemeen, en dus ook in Drupal-ontwikkeling, om de technologie headless te gebruiken.

    Geschreven door Mihail Shahov
    Aug 22, 20237 min read
    Speciale softwareontwikkelaars (teams) inhuren

    Blog

    Speciale softwareontwikkelaars (teams) inhuren

    Bent u het zat om de kosten te verhogen met uw interne ontwikkelteam? Waarom krijgt u geen toegewijd team tegen 40% tot 60% van de kosten?

    Geschreven door Mihail Shahov
    Aug 22, 20233 min read
    Het belang van de juiste ontwikkelingspartner in de levenscyclus van uw softwareontwikkeling

    Blog

    Het belang van de juiste ontwikkelingspartner in de levenscyclus van uw softwareontwikkeling

    Succes ontsluiten: De kunst van het kiezen van de perfecte softwareontwikkelingspartner. Ontdek de cruciale rol van partners in softwareontwikkeling, onthul ROI-geheimen en blijf de trends in de sector voor in dit must-read artikel.

    Geschreven door Mihail Shahov
    Sep 26, 20239 min read
    Config split module tutorial voor Drupal

    Blog

    Config split module tutorial voor Drupal

    Heel vaak moeten wij als ontwikkelaars met verschillende omgevingen werken. Dit kan soms leiden tot (on)verwachte problemen. In Drupal 8 gebruiken we het configuratiesysteem dat aardig goed werkt, maar er zijn gevallen waarin de instellingen voor de lokale en een andere omgeving anders zouden moeten zijn.

    Geschreven door Ivaylo Tsandev
    Aug 22, 20237 min read
    Onthulling van het krachtduo: Next.js als Headless frontend van Drupal 10

    Blog

    Onthulling van het krachtduo: Next.js als Headless frontend van Drupal 10

    Ontdek de dynamische synergie tussen Drupal 10 en Next.js, want deze krachtige combinatie verandert het landschap van webontwikkeling. Next.js, een open-source op React gebaseerd framework, is naadloos geïntegreerd als headless frontend van Drupal 10 en biedt een overvloed aan voordelen. Van verbeterde prestaties met functies als automatische codesplitsing en server-side rendering tot flexibel ontwerp en SEO-vriendelijke mogelijkheden, deze samenwerking stelt ontwikkelaars in staat om goed presterende, schaalbare en visueel aantrekkelijke webapplicaties te maken. Het efficiënte contentbeheer van Drupal 10 in combinatie met het aanpassingsvermogen van Next.js aan trends zorgt voor een geavanceerde ontwikkelaanpak, waardoor deze tandem in de voorhoede van moderne webontwikkelpraktijken staat. Omarm de toekomst met de combinatie van Drupal 10 en Next.js en herdefinieer hoe we dynamische online ervaringen benaderen en creëren.

    Geschreven door Todor Kolev
    Feb 09, 20245 min read
    Config ignore module tutorial voor Drupal

    Blog

    Config ignore module tutorial voor Drupal

    Soms willen we niet dat onze configuraties worden gedeeld in de codebase. Wat kunnen we in zulke gevallen doen?

    Geschreven door Ivaylo Tsandev
    Aug 22, 20237 min read

    NEEM CONTACT OP

    Heb je een project dat je wilt lanceren?