Ergebnis 1 bis 14 von 14

Thema: Webp bei eigenen Modulen

  1. #1
    Contao-Fan
    Registriert seit
    16.01.2012.
    Beiträge
    418

    Standard Webp bei eigenen Modulen

    Guten Tag,

    Contao wandelt die Bilder bei core Inhaltselementen in webp um (so definiert in den Bildgrößen). Bei eigenen Modulen geschieht das nicht. Hat sich hier etwas an der Syntax verändert bzw muss ich hier etwas hinzufügen? Die Bilder fügen wir so ein:

    Code:
    $picture = \Picture::create($bild->path, $imgsize)->getTemplateData();
    $this->insert('picture_default', $picture);

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.109
    Partner-ID
    10107

    Standard

    Solange du in deiner $imgsize Variable eine Bildgröße angegeben hast, wo die Konvertierung aktiviert ist, sollte das auch passieren.

  3. #3
    Contao-Fan
    Registriert seit
    16.01.2012.
    Beiträge
    418

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Solange du in deiner $imgsize Variable eine Bildgröße angegeben hast, wo die Konvertierung aktiviert ist, sollte das auch passieren.
    Jap das ist die ID der Bildgröße. Werden hier aber nur jpgs ausgeben :/

    Kann es evtl an der config.yml liegen

    Code:
    contao:
        image:
            imagine_service: contao.image.imagine.gd
    hier funktioniert der standard bei Hostingwerk leider nicht.

  4. #4
    Contao-Fan
    Registriert seit
    16.01.2012.
    Beiträge
    418

    Standard

    Habs jetzt mit
    Code:
    $this->addImageToTemplate($this->Template, 	$arrData);
    im module geschafft ... jedoch ist das leider nicht überall möglich. (zB bei modulen von dritten - geht ja (glaube ich?) aus dem Template nicht)

  5. #5
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.109
    Partner-ID
    10107

    Standard

    PHP-Code:
    \Contao\Controller::addImageToTemplate 
    kannst du überall machen.

  6. #6
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.109
    Partner-ID
    10107

    Standard

    Zitat Zitat von Nacht69 Beitrag anzeigen
    Guten Tag,

    Contao wandelt die Bilder bei core Inhaltselementen in webp um (so definiert in den Bildgrößen). Bei eigenen Modulen geschieht das nicht. Hat sich hier etwas an der Syntax verändert bzw muss ich hier etwas hinzufügen? Die Bilder fügen wir so ein:

    Code:
    $picture = \Picture::create($bild->path, $imgsize)->getTemplateData();
    $this->insert('picture_default', $picture);
    Du musst die Picture Factory benutzen. Pciture::create ist legacy und deprecated, dort wird das nicht unterstützt.
    Geändert von Spooky (22.07.2020 um 08:02 Uhr)

  7. #7
    Contao-Fan
    Registriert seit
    16.01.2012.
    Beiträge
    418

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Du musst die Picture Factory benutzen. Pciture::create ist legacy und deprecated, dort wird das nicht unterstützt.
    Ich bekomm hier leider egal was ich mache folgenden Fehler.

    Code:
    Call to a member function create() on null
    Code:
    $picture  = $this->imageFactory->create('pfad.jpg', [100, 100, ResizeConfiguration::MODE_CROP]);
    Code:
    $picture  = $this->imageFactory->create($pfad, [0, 0, 5]);
    ahja und auch bei pictureFactory

    Code:
    $image = $this->pictureFactory->create( '/path/to/image.jpg',  [100, 100, ResizeConfiguration::MODE_CROP]);
    muss man die function noch irgendwie definieren oder etwas laden?
    Geändert von Nacht69 (22.07.2020 um 14:56 Uhr)

  8. #8
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.109
    Partner-ID
    10107

    Standard

    Ich vermute du bist noch direkt in einem Template und arbeitest nicht mit Dependency Injection. In dem Fall kannst du dir den Service evt. so holen:
    PHP-Code:
    \Contao\System::getContainer()->get('contao.image.image_factory'

  9. #9
    Contao-Fan
    Registriert seit
    16.01.2012.
    Beiträge
    418

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Ich vermute du bist noch direkt in einem Template und arbeitest nicht mit Dependency Injection. In dem Fall kannst du dir den Service evt. so holen:
    PHP-Code:
    \Contao\System::getContainer()->get('contao.image.image_factory'
    Habs sowohl im Modul als auch im Template probiert.

    Dependency Injection sagt mir nichts als vermutlich nein.

    Code:
    \Contao\System::getContainer()->get('contao.image.image_factory')
    ändert leider nichts.....

  10. #10
    Contao-Fan
    Registriert seit
    16.01.2012.
    Beiträge
    418

    Standard

    mit diesem Code:

    Code:
    	$container = System::getContainer();
            $rootDir = $container->getParameter('kernel.project_dir');
    
    $image = $container
        ->get('contao.image.picture_factory')
        ->create(
            $rootDir.'/pfad.jpg',
            [0, 0, 5]
        );

    (https://community.contao.org/de/show...Teil-erstellen)

    so wird mir zumindest mal kein Fehler angezeigt und es wird ein array mit webp bildern erstellt.

    wie ich das Bild nun ausgebe habe ich noch nicht herausgefunden.

  11. #11
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.109
    Partner-ID
    10107

    Standard

    Zitat Zitat von Nacht69 Beitrag anzeigen
    wie ich das Bild nun ausgebe habe ich noch nicht herausgefunden.
    Ich denke so:
    PHP-Code:
    <?php $this->insert('picture_default', ['img' => $image->getImg(), 'sources' => $image->getSources()]); ?>

  12. #12
    Contao-Fan
    Registriert seit
    16.01.2012.
    Beiträge
    418

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Ich denke so:
    PHP-Code:
    <?php $this->insert('picture_default', ['img' => $image->getImg(), 'sources' => $image->getSources()]); ?>
    Vielen Vielen Dank, leider bekomme ich hier diesen Fehler:

    Code:
    Catchable Fatal Error: Object of class Contao\Image\Image could not be converted to string

  13. #13
    Contao-Fan
    Registriert seit
    16.01.2012.
    Beiträge
    418

    Standard

    So denke ich funktioniert es jetzt .... warscheinlich ist das bisschen umständlich....

    Code:
    $container = System::getContainer();
    $rootDir = $container->getParameter('kernel.project_dir');
    
    
    $picture = $container
        ->get('contao.image.picture_factory')
        ->create(
            $rootDir.'/pfad.jpg',
            [0, 0, 5]
        ); 
    	
    	
    $data = [
        'img' => $picture->getImg($rootDir),
        'sources' => $picture->getSources($rootDir),
    ];
    	
    
    
    
    $this->insert('picture_default', $data);

  14. #14
    Contao-Fan
    Registriert seit
    16.01.2012.
    Beiträge
    418

    Standard nur webp pfad ausgeben

    Gibt es auch eine möglichkeit nur anstatt mit ->getUrl() den Pfad zum webp Bild auszugeben? Leider finde ich hierzu keine doku mit allen möglichkeiten.

    Verwendungszweck:
    für ein sticky-hintergrundbild das als inline-css angegeben werden soll möchte ich das webp statt dem jpg ausgeben.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •