Ergebnis 1 bis 9 von 9

Thema: Bild in verkleinerter Größe abrufen

  1. #1
    Contao-Nutzer
    Registriert seit
    02.12.2017.
    Beiträge
    140

    Standard Bild in verkleinerter Größe abrufen

    Hallo zusammen,

    in Contao 4 konnte ich in einem .html5-Template eine kleine Version eines Bildes wie folgt abrufen und einbinden:

    PHP-Code:
                    $src = FilesModel::findByUuid(unserialize($product->orderImageSRC)[0])->path;
                    $smallImg = \Image::get($src, 300, null, 'proportional');
                    <img class="lozad" data-src="<?= $smallImg ?>">
    Dies scheint in Contao 5 aber nicht mehr zu funktionieren. Ich bin bereits auf Image Factory gestoßen, habe hier aber ehrlich gesagt nicht ganz durchgeblickt und war mir nicht sicher, ob ich dort richtig bin.

    Kann mir hier jemand weiterhelfen?

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

    Standard

    Nachdem du ohnehin das Bild dann einfach nur als <img> ausgibst - nimm doch den Figure Builder aus dem Image Studio. https://docs.contao.org/dev/framewor...-figurebuilder
    » sponsor me via GitHub or PayPal or Revolut

  3. #3
    Contao-Nutzer
    Registriert seit
    02.12.2017.
    Beiträge
    140

    Standard

    Ich habe es nun so versucht:

    PHP-Code:
                    $src FilesModel::findByUuid(unserialize($product->orderImageSRC)[0])->path;
                    
    $figureBuilder $this->studio->createFigureBuilder();


                    
    $figureBuilder
                    
    ->fromPath($src)
                    ->
    setSize([3000'proportional']);
                    
    $figure $figureBuilder->build(); 
    Dies schlägt aber mit der folgenden Meldung fehl:
    Call to a member function createFigureBuilder() on null

    Was habe ich übersehen?

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

    Standard

    $this->studio existiert nicht. Du musst dir vorher den Studio Service holen, wenn du das im Template machst.

    Um was genau geht es hier eigentlich? Geht es um das Inhaltselement deines anderen Threads? Wenn ja dann solltest du das im Controller machen, nicht im Template. Dort holst du dir per Dependency Injection das Image Studio.
    » sponsor me via GitHub or PayPal or Revolut

  5. #5
    Contao-Nutzer
    Registriert seit
    02.12.2017.
    Beiträge
    140

    Standard

    Genau, das ist das Template meines Inhaltselementes, um das es in dem anderen Thread ging.
    Hier wird eine Produktübersicht (> 300 Produkte) ausgegeben. Dabei soll eine Miniaturansicht des hinterlegten Produktbildes generiert werden.

    Wie würde das im Controller denn aussehen?

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

    Standard

    Du musst dir einfach nur Contao\CoreBundle\Image\Studio\Studio injecten lassen (geht automatisch durch autowiring). Siehe bspw. https://github.com/contao/contao/blo...Controller.php
    Geändert von Spooky (11.01.2024 um 09:28 Uhr)
    » sponsor me via GitHub or PayPal or Revolut

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

    Standard

    Im PHP Template kannst du übrigens auch direkt
    PHP-Code:
    <?= $this->figure() ?>
    nutzen, evt. reicht dir das. Also für dein Beispiel weiter oben:
    PHP-Code:
    <?php $images Contao\StringUtil::deserialize($product->orderImageSRCtrue); ?>
    <?= $this
    ->figure($images[0] ?? null, [3000'box']) ?>
    » sponsor me via GitHub or PayPal or Revolut

  8. #8
    Contao-Nutzer
    Registriert seit
    02.12.2017.
    Beiträge
    140

    Standard

    Das hilft mir sehr weiter, vielen Dank!

    PHP-Code:
    $this->figure($images[0] ?? null, [3000'box']) 
    Dies gibt ja direkt das gesamte figure Element aus. Kann ich dem innenliegendem img-Element noch direkt eine Klasse hinzufügen? Über die Options konnte ich nur dem figure-Element eine Klasse hinzufügen.
    Geändert von waldo (11.01.2024 um 11:30 Uhr)

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

    Standard

    PHP-Code:
    <?= $this->figure($images[0] ?? null, [3000'box'], ['options' => ['floatClass' => ' my-class']]) ?>
    » sponsor me via GitHub or PayPal or Revolut

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
  •