Hallo zusammen,
mir ist gerade folgendes Verhalten bezüglich der automatischen Skalierung/Kompression der Produkt- / Kategorie-Bilder aufgefallen:
Wovon ich ausgegangen bin:
Auf alle Bilder die ich im Backend hochlade, wird die eingestellte Kompressionsrate angewandt und die Bilder entsprechend komprimiert.
Das derzeitige Verhalten (vers. 4.8.6)
Sobald ich ein Bild mit genau den in den Templateeinstellungen definierten Maßen (B x H) hochlade, wird das Bild nur kopiert, nicht aber komprimiert.
Handelt es sich hierbei um einen Bug oder ein Feature, zumal es für diese Prüfung nach den exakten Maßen extra eine Funktion "checkSizeAndCopy" in der"core/utils/oxpicgenerator.php" gibt: Bei "return array" wird komprimiert und skaliert, ansonsten nur kopiert.
Wenn man nur das Skalieren betrachtet, macht das natürlich Sinn, aber bezüglich der Kompression ist das Verhalten nicht gerade günstig.
Mein Kunde soll sich schließlich nicht selbst auf das Komprimieren der Bilder kümmern müssen.
mir ist gerade folgendes Verhalten bezüglich der automatischen Skalierung/Kompression der Produkt- / Kategorie-Bilder aufgefallen:
Wovon ich ausgegangen bin:
Auf alle Bilder die ich im Backend hochlade, wird die eingestellte Kompressionsrate angewandt und die Bilder entsprechend komprimiert.
Das derzeitige Verhalten (vers. 4.8.6)
Sobald ich ein Bild mit genau den in den Templateeinstellungen definierten Maßen (B x H) hochlade, wird das Bild nur kopiert, nicht aber komprimiert.
Handelt es sich hierbei um einen Bug oder ein Feature, zumal es für diese Prüfung nach den exakten Maßen extra eine Funktion "checkSizeAndCopy" in der"core/utils/oxpicgenerator.php" gibt: Bei "return array" wird komprimiert und skaliert, ansonsten nur kopiert.
Wenn man nur das Skalieren betrachtet, macht das natürlich Sinn, aber bezüglich der Kompression ist das Verhalten nicht gerade günstig.
Mein Kunde soll sich schließlich nicht selbst auf das Komprimieren der Bilder kümmern müssen.
Code:
function checkSizeAndCopy( $sSrc, $sTarget, $iWidth, $iHeight, $iOrigWidth, $iOrigHeight )
{
list( $iNewWidth, $iNewHeight ) = calcImageSize( $iWidth, $iHeight, $iOrigWidth, $iOrigHeight );
return array( $iNewWidth, $iNewHeight );
if ( $iNewWidth == $iOrigWidth && $iNewHeight == $iOrigHeight ) {
return copy( $sSrc, $sTarget );
} else {
return array( $iNewWidth, $iNewHeight );
}
}