Hallo,
ich musste Bilder mit einem Rahmen umranden, der abgerundete Ecken hat. Leider fand ich hier im Forum nur ähnliche Fragensteller, jedoch keine konkrete Lösung.
Ich stelle hier nun meine der Community zur Verfügung:
Das ganze muss man mit der Mask-Eigenschaft von imgResource lösen. Daher habe ich zuerst meine Maske für den 3px-Rahmen erzeugt:
Bild: dschung.biz/…/mask_3.gif
Das Bild hab ich dann unter fileadmin/templates/images/mask_3.gif gespeichert.
Weiter ging es mim TypoScript. Da ich das ganze relativ dynamisch halten will, verwende ich 2 Konstanten, die man unter "constants" setzten kann, die Farbe und die Rahmenstärke. Das Bild von oben muss an die jeweilige Rahmenstärke angepasst werden.
Zu erst wird dynamisch die Maske erzeugt, die später verwendet wird.
temp.imgBoxMask = GIFBUILDER
temp.imgBoxMask {
XY = [1.w]+{$myBorderWidth}+{$myBorderWidth}, [1.h]+{$myBorderWidth}+{$myBorderWidth}
1 = IMAGE
1.offset = {$myBorderWidth},{$myBorderWidth}
1.file.import.current = 1
1.file.import.listNum = 0
1.file.width.field = imagewidth
1.file.height.field = imageheight
10 = BOX
10.dimensions = {$myBorderWidth},{$myBorderWidth},[1.w],[1.h]
10.color = #000000
20 = IMAGE
20.file = fileadmin/templates/images/mask_{$myBorderWidth}.gif
20.align = l,t
21 = IMAGE
21.file = fileadmin/templates/images/mask_{$myBorderWidth}.gif
21.file.params = -rotate 90
21.align = r,t
22 = IMAGE
22.file = fileadmin/templates/images/mask_{$myBorderWidth}.gif
22.file.params = -rotate 180
22.align = r,b
23 = IMAGE
23.file = fileadmin/templates/images/mask_{$myBorderWidth}.gif
23.file.params = -rotate 270
23.align = l,b
}
In Zeile 4 bis 9 wird das aktuelle Bild geladen, damit die Breite und Höhe ausgelesen werden kann. Wusste nicht, wie ich auf die Angaben aus nem anderen TypoScript-Bereich hätte auslesen sollen.
Es wird also eine Maske erzeugt, die genau um die doppelte Breite des Borders höher, bzw. breiter ist als das Bild. Die Multiplikation im TS hat nicht funktioniert, daher die doppelte Addition. Das Maskenbild von oben für die Rundungen wird für alle Ecken verwendet, nur halt entsprechend immer gedreht.
Im Folgenden habe ich den Code für "Text m/Bild" erstellt. Kann man natürlich anpassen.
tt_content.textpic.20.1.file >
tt_content.textpic.20.1.file = GIFBUILDER
tt_content.textpic.20.1.file {
XY = [10.w],[10.h]
transparentColor=#ffffff
backColor = #ffffff
10 = IMAGE
10.file = GIFBUILDER
10.file {
XY = [10.w]+{$myBorderWidth}+{$myBorderWidth},[10.h]+{$myBorderWidth}+{$myBorderWidth}
10 = IMAGE
10.offset = {$myBorderWidth},{$myBorderWidth}
10.file.import.current=1
10.file.width.field = imagewidth
10.file.height.field = imageheight
15 = IMAGE
15.file = GIFBUILDER
15.file {
XY = [1.w]+{$myBorderWidth}+{$myBorderWidth},[1.h]+{$myBorderWidth}+{$myBorderWidth}
1 = IMAGE
1.file.import.current=1
1.file.import.listNum = 0
1.file.width.field = imagewidth
1.file.height.field = imageheight
10 = BOX
10.dimensions = 0,0,[1.w]+{$myBorderWidth}+{$myBorderWidth},[1.h]+{$myBorderWidth}+{$myBorderWidth}
10.color = {$myBorderColor}
}
15.mask < temp.imgBoxMask
}
}
Die Maske von oben wird nun in Zeile 29 eingebunden. Habe übrigend als untere Ebene das Bild und _darüber_ den Rahmen gelegt, nicht umgekehrt, wäre in meinen Augen schwieriger gewesen.
Das Ganze sieht dann so aus:
http://gfr-ludwigshafen.de.server212-han.de-nserver.de/
(Die Seite ist im Aufbau, kann daher nicht garantieren, dass sie z.Z. des Zugriffes gescheit dargestellt wird)
Noch offene Fragen:
- Wäre es möglich trotz Maske mehr als 256 Farben zu erhalten? Wäre dann also keine GIF mehr und die Ecken wären dann auch nicht mehr transparent, aber das würde ich in Kauf nehmen.
- Zugriff auf das aktuelle Bild ohne es neu zu laden.