[4.9.6] Image Transparentz
[4.9.6] Image Transparentz
Hallo!
Ist das gewollt oder ein Bug?
in der Datei "functions.api.images.php" (Contenido 4.9.6) wird in der Funktion cApiImageGetCacheFileName(), bei der switch anweisung, auf "png" und "gif" geprüft. Sollte das nicht ".png" und ".gif" heißen?
Das ist mir aufgefallen, da seit dem Update auf 4.9.6 keine Transparentz mehr in den runtergerechneten Bildern funktioniert. War ganz schön ärgerlich.
Gruß
Matthias
Ist das gewollt oder ein Bug?
in der Datei "functions.api.images.php" (Contenido 4.9.6) wird in der Funktion cApiImageGetCacheFileName(), bei der switch anweisung, auf "png" und "gif" geprüft. Sollte das nicht ".png" und ".gif" heißen?
Das ist mir aufgefallen, da seit dem Update auf 4.9.6 keine Transparentz mehr in den runtergerechneten Bildern funktioniert. War ganz schön ärgerlich.
Gruß
Matthias
-
- Beiträge: 1945
- Registriert: Sa 8. Sep 2007, 16:23
- Wohnort: Brandenburg
- Hat sich bedankt: 6 Mal
- Kontaktdaten:
Re: [4.9.6] Image Transparentz
In der API-Doc stehts noch mit Punkt drin: http://api.contenido.org/con490/source- ... ml#580-606
Könnte es sein, dass im $filetype schon der Punkt fehlt?
Könnte es sein, dass im $filetype schon der Punkt fehlt?
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.
Re: [4.9.6] Image Transparentz
Der $filetype wird vom Contenido selbst ermittelt. Kann man in den ImageScale funktionen sehen.Faar hat geschrieben:In der API-Doc stehts noch mit Punkt drin: http://api.contenido.org/con490/source- ... ml#580-606
Könnte es sein, dass im $filetype schon der Punkt fehlt?
-
- Beiträge: 1945
- Registriert: Sa 8. Sep 2007, 16:23
- Wohnort: Brandenburg
- Hat sich bedankt: 6 Mal
- Kontaktdaten:
Re: [4.9.6] Image Transparentz
Naja, die Funktion ist nicht ganz frei von Fehleranfälligkeit.
Was passiert, wenn die Dateiendungen vier Zeichen lang sind, so wie bild.tiff ?
Und warum der Umstand mit strlen()?
substr($filename,-4) sollte genügen.
Denn bei utf-8 könnte die Länge nicht ganz stimmen ("ätsch" sind laut strlen() 6 statt 5 Zeichen):
Nun stell dir einfach vor, dass sich die Contenido Funktion um genau eine Stelle verrechnet, dann fehlt da ein Punkt.
Mit ...
würde z.B. alles nach dem letzten Punkt genommen werden.
Das müsstest du mal testen.
Mach doch mal ein echo auf $filename, dann siehst du erstmal, was da drin steht.
Kann ja auch sein, dass in den Dateinamen was nicht stimmt.
Code: Alles auswählen
substr($filename, strlen($filename) - 4, 4
Und warum der Umstand mit strlen()?
substr($filename,-4) sollte genügen.
Denn bei utf-8 könnte die Länge nicht ganz stimmen ("ätsch" sind laut strlen() 6 statt 5 Zeichen):
Code: Alles auswählen
$length = strlen(utf8_decode($filename));
Mit ...
Code: Alles auswählen
$filename = 'bild.tiff;
$filetype = strrchr($filename, ".");
echo $filetype; // ".tiff"
Das müsstest du mal testen.
Mach doch mal ein echo auf $filename, dann siehst du erstmal, was da drin steht.
Kann ja auch sein, dass in den Dateinamen was nicht stimmt.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.
-
- Beiträge: 967
- Registriert: Do 15. Apr 2004, 17:12
- Wohnort: Eschborn-Niederhöchstadt
- Kontaktdaten:
Re: [4.9.6] Image Transparentz
Die Punkte wurden explizit herausgenommen, weil die entsprechenden Prüfungen auf die Dateitypnamen prüfen. Das Problem tauchte auf, weil die umgerechneten Bilder nicht mehr transparent waren und die Fehlerbeseitigung hat dazu geführt, dass sie wieder transparent wurden. Wieso bei Dir der Effekt komplett umgekehrt ist, entzieht sich gerade meiner Kenntnis! Ich schaue mir das heute noch einmal an.mattmarr hat geschrieben:Hallo!
Ist das gewollt oder ein Bug?
in der Datei "functions.api.images.php" (Contenido 4.9.6) wird in der Funktion cApiImageGetCacheFileName(), bei der switch anweisung, auf "png" und "gif" geprüft. Sollte das nicht ".png" und ".gif" heißen?
Das ist mir aufgefallen, da seit dem Update auf 4.9.6 keine Transparentz mehr in den runtergerechneten Bildern funktioniert. War ganz schön ärgerlich.
Frederic Schneider
Entwickler bei der four for business AG
Entwickler bei der four for business AG
-
- Beiträge: 967
- Registriert: Do 15. Apr 2004, 17:12
- Wohnort: Eschborn-Niederhöchstadt
- Kontaktdaten:
Re: [4.9.6] Image Transparentz
Ich habe das eben noch einmal überprüft:
Die Funktion cApiImageGetCacheFileName() wird mit dem Parameter $filetype in den Funktionen cApiImgScaleLQ(), cApiImgScaleHQ() sowie cApiImgScaleImageMagick() aufgerufen.
In den Funktionen cApiImgScaleLQ() und cApiImgScaleHQ() wird der $filetype via cFileHandler::getExtension($filename) ermittelt. Das Ergebnis ist dann entweder "jpg", "gif", "png", "tiff" et cetera. Also: Ohne Punkt. In der Funktion cApiImgScaleImageMagick() hingegen nutzen wir noch den alten Aufruf substr($filename, strlen($filename) - 4, 4). Das muss natürlich geändert werden.
Vielen Dank für Eure Hinweise!
Die Funktion cApiImageGetCacheFileName() wird mit dem Parameter $filetype in den Funktionen cApiImgScaleLQ(), cApiImgScaleHQ() sowie cApiImgScaleImageMagick() aufgerufen.
In den Funktionen cApiImgScaleLQ() und cApiImgScaleHQ() wird der $filetype via cFileHandler::getExtension($filename) ermittelt. Das Ergebnis ist dann entweder "jpg", "gif", "png", "tiff" et cetera. Also: Ohne Punkt. In der Funktion cApiImgScaleImageMagick() hingegen nutzen wir noch den alten Aufruf substr($filename, strlen($filename) - 4, 4). Das muss natürlich geändert werden.
Vielen Dank für Eure Hinweise!
Frederic Schneider
Entwickler bei der four for business AG
Entwickler bei der four for business AG
-
- Beiträge: 967
- Registriert: Do 15. Apr 2004, 17:12
- Wohnort: Eschborn-Niederhöchstadt
- Kontaktdaten:
Re: [4.9.6] Image Transparentz
Das Problem ist in CONTENIDO 4.9.7 behoben
Frederic Schneider
Entwickler bei der four for business AG
Entwickler bei der four for business AG