Zum Inhalt springen

Ein Bild über einem anderen in einer Funktion

Erstellt am 25. August 2010 · 3 Antworten · letzte Antwort am 25. August 2010

Tags: Bilder, PHP, Frage

mbetschart ·

Hallo zusammen

habe folgende Frage:
Wie kann ich ein Bild (Schatten) hinter ein generiertes Bild legen?

$imgTSConfig=$this->cObj->IMAGE($this->conf["image."]);           
$imgTSConfig['backColor'] = '#ffffff'; 
$imgTSConfig['file.']['maxW'] = '120';
$imgTSConfig['file.']['maxH'] = '180';
$imgTSConfig['file.']['params']='-rotate 8';
$imgTSConfig['file'] ='uploads/tx_test/'.($row["bild"]);
$imgTSConfig['alttext'] = ($row["titel"]);
$imgTSConfig['titletext'] = ($row["titel"]);
$imgTSConfig['quality'] = '100';
$content.=$this->cObj->IMAGE($imgTSConfig);

Ich habe schon versucht "$imgTSConfig['file.']" mit "$imgTSConfig['file.']['10.']" zu ersetzen. Aber dann wird gar nichts dargestellt.
Hinzu kommt, dass das Bild 8° gedreht wird. Ansonsten hätte ich den "Schatten" mittels css erstellt.

Danke für eine Antwort.
Mathias

lavitto ·

Hi Mathias

Das würde ich mit GIFBUILDER machen.

Da musst du jedoch zuerst den Schatten machen und danach das Ganze mit EFFECT drehen. Das SHADOW-Element kann jedoch nicht auf Bilder angewendet werden, soviel ich weiss. Du müsstest für den Schatten also irgend ein transparentes PNG nehmen od. ähnlich.

img = IMAGE
img {
  file = GIFBUILDER
  file {
    XY = ...

    10 = IMAGE
    10.file = dein-schatten-file
  
    20 = IMAGE
    20.file = dein-bild

    30 = EFFECT
    30.value = rotate=8
  }
}

Gruss Philipp

mbetschart ·

Hallo Philipp

da ich diesen Code in einer Extension habe kann ich deinen Lösungsansatz nicht anwenden. Der Ansatz mit "10.file..." und "20.file..." stimmt glaube ich aber wie krieg ich es mit dem untenstehenden Code hin (?).

Wenn ich es so schreibe

...
$imgTSConfig=$this->cObj->IMAGE($this->conf["image."]);           
$imgTSConfig['backColor'] = '#ffffff'; 
$imgTSConfig['file.']["10."]['maxW'] = '120';
$imgTSConfig['file.']["10."]['maxH'] = '180';
$imgTSConfig['file.']["10."]['params']='-rotate 8';
$imgTSConfig['file.']["10"] ='uploads/tx_test/'.($row["bild"]);
...

wird nur ein weisses Bild generiert. Aber das Bild welches eingelesen werden sollte wird nicht dargestellt.

lavitto ·

Hi

Das ist grundsätzlich dasselbe Prinzip. Anstelle des TypoScript-Arrays machst du einfach ein PHP-Array.

$imgTSConfig = array(
    'file' => 'GIFBUILDER',
    'file.' => array(
        '10' => 'IMAGE',
        '10.' => array(
            'file' => '...',
        )
    )
);

Am einfachsten machst du das komplette Array in TypoScript, lädst es später in PHP rein und ersetzt das "file"-Feld.

Über die $conf-Variable erhälst du ja sämtliches TypoScript der Extension als Array geliefert, wenn deine Extension dementsprechend vorbereitet ist. So musst du auch nicht gleich die Extension umprogrammieren, wenn's mal eine Änderung am Bild gibt.

Gruss Philipp