Ergebnis 1 bis 10 von 10

Thema: Contao 5.3 -Ersatz für $this->getImage() in rsce Template

  1. #1
    Contao-Nutzer
    Registriert seit
    09.07.2014.
    Ort
    Dortmund
    Beiträge
    28

    Standard Contao 5.3 -Ersatz für $this->getImage() in rsce Template

    Hallo!

    In Conto 4.13 habe ich in einem rsce-Template mit folgendem Code gearbeitet:
    Code:
     $resizedimage = $this->getImage( $bild->src, 1200, 630 , $this->ausschnitt );(
    In Contao 5.3 funktioniert $this->getImage() aber nicht mehr.
    Ich habe es ersetzt durch:
    Code:
    use Contao\CoreBundle\Image\ImageFactoryInterface;
    
    $resizedimage = $this->imageFactory->create(
        $bild->src,
       [1200, 630, ResizeConfiguration::MODE_CROP]
    );
    Ich bekomme folgende Fehlermeldung:
    "Call to a member function create() on null"

    Wird in ImageFactory eine andere Pfadangabe benötigt als bei getImage()?
    Oder handelt es sich um einen ganz anderen Fehler?

    Besten Dank für Eure Hilfe!

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

    Standard

    Zitat Zitat von pinda Beitrag anzeigen
    Hallo!

    In Conto 4.13 habe ich in einem rsce-Template mit folgendem Code gearbeitet:
    Code:
     $resizedimage = $this->getImage( $bild->src, 1200, 630 , $this->ausschnitt );(
    Du meinst wohl $this->getImageObject()?
    » sponsor me via GitHub or Revolut

  3. #3
    Contao-Nutzer
    Registriert seit
    09.07.2014.
    Ort
    Dortmund
    Beiträge
    28

    Standard

    Hallo Spooky,

    nein, ich meinte $this->getImage().

    Ich habe das verwandt um eine verkleinerte Version eines Bildes zu erzeugen, dessen Pfad, Dateinamen und Metainformationen ich dann weiterverwendet habe.

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

    Standard

    Ab Contao 4.13 kannst du folgendes nutzen:
    PHP-Code:
    <?= $this->figure($bild->src, [1200630$this->ausschnitt]) ?>
    Das gibt dir aber bereits des fertige Bild aus, inkl. <figure> Tag.
    » sponsor me via GitHub or Revolut

  5. #5
    Contao-Nutzer
    Registriert seit
    09.07.2014.
    Ort
    Dortmund
    Beiträge
    28

    Standard

    Hallo Spooky,

    ich benötige nur die Attribute des Bildes, nicht den kompletten Tag!

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

    Standard

    Poste genauer was du machen möchtest.

    Poste bspw. das komplette alte Template.
    » sponsor me via GitHub or Revolut

  7. #7
    Contao-Nutzer
    Registriert seit
    09.07.2014.
    Ort
    Dortmund
    Beiträge
    28

    Standard

    Hallo Spooky,

    ich habe ein custom element in dem der Benutzer ein Bild für facebook und twitter auswählen kann und bestimmen kann ,von welchem Punkt ausgehend ( Mitte / Mitte, Links / Oben, …) das jeweilige Bild verkleinert werden soll. Die Maße für das resize sind vorgegeben.
    Von diesen verkleinerten Bilder wird deren URL und die Metainfomation Alt-Text weiterverwendet, um das Vorschaubild beim Teilen der Seite auf social media zu definieren.

    Code:
    <?php
     $bild = $this->arrData['getImageObject']($this->bild);
     $bildtwitter = $this->arrData['getImageObject']($this->bildtwitter);
    
     $fbimage = $this->getImage( $bild->src, 1200, 630 , $this->ausschnitt );
     $twitterimage = $this->getImage( $bildtwitter->src, 1200, 675 , $this->ausschnitttwitter ); 
    
     $GLOBALS['og:image'] = $this->Environment->base . $fbimage;
     $size = getimagesize($fbimage);
     $GLOBALS['og:image:width'] = "$size[0]";
     $GLOBALS['og:image:height'] = "$size[1]";
    
     $GLOBALS['twitter:image'] = $this->Environment->base . $twitterimage;
     $GLOBALS['twitter:image:alt'] = $bildtwitter->alt;
    
    ?>
    <?php if (TL_MODE == 'BE'): ?>
    
    <h3>facebook</h3>
    		<img src="<?php echo $this->Environment->base . $fbimage ?>" alt="<?php echo $bild->alt ?: $this->titel ?>"<?php echo $fbimage->imgSize ?>  itemprop="image"><br><br>
    <h3>twitter</h3>
    		<img src="<?php echo $this->Environment->base . $twitterimage ?>" alt="<?php echo $bildtwitter->alt ?: $this->titel ?>"<?php echo $twitterimage->imgSize ?>  itemprop="image"><br><br>
    
    <?php endif; ?>
    Dieses Seitenelement verwende ich z.B. in einem Auftritt in dem weit über hundert News-Einträge vorhanden sind, die alle dieses Seitenelement verwenden.

    Besten Dank für Deine Hilfe!
    Geändert von pinda (10.07.2024 um 17:09 Uhr)

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

    Standard

    Ich würde es so machen denke ich:
    PHP-Code:
    use Contao\CoreBundle\Image\Studio\Studio;
    use 
    Contao\System;
    use 
    Symfony\Component\Filesystem\Path;
    use 
    Symfony\Component\HttpFoundation\Request;

    /** @var Studio $studio */
    $studio System::getContainer()->get('contao.image.studio');

    /** @var Request $request */
    $request System::getContainer()->get('request_stack')->getCurrentRequest();

    $figure $studio->createFigureBuilder()
        ->
    from($this->bild)
        ->
    setSize([1200630$this->ausschnitt])
        ->
    buildIfResourceExists()
    ;

    if (
    $figure) {
        
    $img $figure->getImage()->getImg();

        
    $GLOBALS['og:image'] = !== strpos($image['src'], 'http') ? Path::join($request->getSchemeAndHttpHost(), $img['src']) : $img['src'];
        
    $GLOBALS['og:image:width'] = $img['width'];
        
    $GLOBALS['og:image:height'] = $img['height'];
    }

    // … 
    » sponsor me via GitHub or Revolut

  9. #9
    Contao-Nutzer
    Registriert seit
    09.07.2014.
    Ort
    Dortmund
    Beiträge
    28

    Standard

    Hallo Spooky,

    Deine Lösung hilft mir sehr weiter, 1.000 Dank!

    Die wichtigste Zeile für mich war

    $img = $figure->getImage()->getImg();

    Der Schlüssel, um an die Attribute des erzeugten Bildes zu kommen.

    Ich hatte das in der Doku nicht gefunden, wo dort steht es nur?


    Beste Grüße aus Dortmund!

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

    Standard

    Der FigureBuilder ist in der Dokumentation beschrieben. Welche Methoden die Figure Instanz bietet, ist nicht dokumentiert, aber siehst du in deiner IDE.
    » sponsor me via GitHub or Revolut

Aktive Benutzer

Aktive Benutzer

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

Berechtigungen

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