Wasserzeichen / Watermark für Produktbilder

Funktioniert deine Lösung denn schon?
Wie sieht deine core/utils/watermark.php aus?

<?php
// Checks if instance name getter does not exist
if ( !function_exists( "getGeneratorInstanceName" ) ) {
/**
* Returns image generator instance name
*
* @return string
*/
function getGeneratorInstanceName()
{
   return "watermark";
}
}
require_once "../oxdynimggenerator.php";
class watermark extends oxDynImgGenerator
{   
   protected function _generateJpg( $sSource, $sTarget, $iWidth, $iHeight, $iQuality )
    {
       $strImageDestination = $sSource;
  	$strImageWatermark = './wz.png';

       $iQuality = 100;
       list ( $iDestinationWidth, $iDestinationHeight,
       $iDestinationType ) = getimagesize ( $strImageDestination );
       list ( $iWatermarkWidth, $iWatermarkHeight,
       $iWatermarkType ) = getimagesize ( $strImageWatermark );
 
       $rDestination = imagecreatefromjpeg ( $strImageDestination );
       $rWatermark = imagecreatefrompng ( $strImageWatermark );

       $iPositionX = ceil ( ( $iDestinationWidth / 2 ) );
       $iPositionX -= ceil ( ( $iWatermarkWidth / 2 ) );
       $iPositionY = ceil ( ( $iDestinationHeight / 2 ) );
       $iPositionY -= ceil ( ( $iWatermarkHeight / 2 ) );

     	imagecopy ( $rDestination, $rWatermark, $iPositionX,
                   $iPositionY, 0, 0, $iWatermarkWidth,
                   $iWatermarkHeight);

      	header ( 'content-type: image/jpeg' );
      	imagejpeg ( $rDestination, 'test.jpg' , $iQuality );

  	imagedestroy ($rDestination);
  	imagedestroy ( $rWatermark );	
     	
	return resizeJpeg( 'test.jpg' , $sTarget, $iWidth, $iHeight, @getimagesize( $sSource ), getGdVersion(), null, $iQuality );
    }
}
require_once "getimg.php";

?>

das Funktioniert soweit. Allerdings werden nur .jpg Bilder mit Wasserzeichen überladen, wenn es für andere auch funktionieren soll muss man halt die entsprechende Funktion erweitern.

Die Version ist für ein Wasserzeichen mit transparentem Hintergrund. Ich habe auch eine Lösung wenn das Wasserzeichen erst noch Transparent gemacht werden muss.

Beide Versionen sind allerdings noch nicht ganz ideal, da ich das erzeugte bild erst zwischenspeichere bevor ich es wieder lade.

wenn jemand noch verbesserungsvorschläge hat immer her damit.

das oben beschriebene Script habe ich jetzt in Betrieb, allerdings habe ich hin und wieder Fehler bei dem 2,3 oder 4 Bild eines Artikels, hier werden die großen Bilder nicht korrekt erzeugt, es sind dann irgendwelche komischen oder unvollständigen Bilder vorhanden.

hat jemand einen Tipp für mich?

Nabend!
Zusammengefasst heißt dies also

  • .htaccess Datei bearbeiten
    "RewriteRule (.jpg|.gif|.png)$ core/utils/watermark.php"
  • watermark.php mit den oben genannten Inhalten erstellen und in core/utils/ ablegen
  • watermark.png in out/pictures/ ablegen

Ist das soweit korrekt?
Tritt bei dir sporadisch noch der Darstellungsfehler auf?

Gruß
Tobias

[QUOTE=eXtremeTK;83839]Nabend!
Zusammengefasst heißt dies also

  • .htaccess Datei bearbeiten
    "RewriteRule (.jpg|.gif|.png)$ core/utils/watermark.php"
  • watermark.php mit den oben genannten Inhalten erstellen und in core/utils/ ablegen
  • watermark.png in out/pictures/ ablegen

Ist das soweit korrekt?
Tritt bei dir sporadisch noch der Darstellungsfehler auf?
[/QUOTE]

Nabend!

  • die watermark.png liegt in /core/utils/ (würde Sie auch gerne aus einem anderen Verzeichnis laden, wenn du weist wie wäre ich für Hilfe dankbar)

  • am besten erstellst du im gleichen Verzeichnis noch eine datei “test.jpg”, dass ist die Datei in der ich das Bild zwischenspeichere.

-sonst alles wie in der Zusammenfassung.
ich würde noch eine if-abfrage um die Bilderzeugung machen, damit das Wasserzeichen nur auf die großen Bilder gelegt wird. Sonst sehen die anderen Bilder etwas komisch aus.

-im Basic Theme ist der Fehler nicht mehr da! => test.jpg und watermark.png habe ich auf 777 gesetzt dann war der Fehler weg.

-beim Azure Theme ist das problem das die Zoombilder aus den Masterbildern erzeugt werden und somit das Wasserzeichen fehlt.

Ich hoffe ich konnte helfen.

Danke dir schonmal!
Ehrlich gesagt weiß ich nicht, wie man solch eine if-Abfrage anfertigt oder einfügen müsste.

Denke ich werde es einmal so ausprobieren und ein kleines Wasserzeichen einsetzen. Werde dann hier berichten. Mache mich nun an die Arbeit.

Danke & Gruß
Tobias

Ok viel erfolg.

Hi!

Leider regt sich bei mir nichts im Shop.

  • Die .htaccess im Hauptverzeichnis habe ich angepasst.
  • watermark.png sowie test.jpg sind angelegt.
  • watermark.php ist mit deinen obigen Inhalten angelegt.
  • tmp Verzeichnis habe ich schon geleert.

Muss ich die Views noch aktualisieren?
Habe eben gerade das Update auf 4.5.8 durchgeführt - sollte aber eigentlich für das Wasserzeichen unrelevant sein.

Meine Url: www.stoffversand4u.de

Gruß
Tobias

EDIT:
Oder muss das Wasserzeichen “wz.png” heißen?

ja du hast Recht! das Wasserzeichen muss wz.png heißen oder in der Datei entsprechend angepasst werden.

Habe ich gestern nicht drauf geachtet.

Da erscheint leider immer noch kein Wasserzeichen :frowning:
tmp Verzeichnis habe ich geleert.

sieh dir mal das test.jpg an ob dort ein Bild erzeugt wurde.

sind deine master bilder den jpeg bzw jpg ?

Die test.jpg habe ich erstellt und dort hinein kopiert - war das falsch?
Benannt sind die Bilder z.B. wie folgt: 00-633.jpg

Gruß
Tobias

nein das ist richtig, wenn du die jetzt wieder auf deinen rechner kopierst und dir das bild ansiesht, sollte dies eines deiner Bilder sein.

in dieser datei wird immer erst das bild erzeugt, bevor es dann in der entsprechenden Größe angepasst wird.

der bildname ist egal er muss halt für diese datei nur .jpg sein. Das ist aber auch richtig.

hast du schon mal den generated ordner gelöscht?
( /out/pictures/generated )

in dem sind ja die “alten” bilder erzeugt ohne wasserzeichen.

Hi!

Die test.jpg ist jetzt ein Artikelbild - funktioniert also.
Kann ich den Inhalt in der out/pictures/generated einfach löschen? SICHER?

Gruß
Tobias

ja den ordner kannst du einfach löschen, das sind die Bilder die der shop erzeugt. Solange die Artikelbilder in diesem Ordner sind werden keine neuen erzeugt und damit auch kein Wasserzeichen.

Das ist ja der Vorteil an dieser Version des Wasserzeichens. Es wird einmal erzeugt und bleibt dann für alle aufrufe auf dem Bild im generated Ordner und muss nicht für jeden Aufruf neu erzeugt werden.

Klasse - jetzt funktioniert es prima!

Die Rohdateien bleiben aber unbearbeitet, sodass ich zur Not vom Server die Bilder noch ohne Wasserzeichen laden kann?

Gruß & besten Dank!
Tobias

ja genau die Bilder im Masterverzeichnis bleiben ohne Wasserzeichen und werden nicht verändert.

Viel Spaß mit dem Wasserzeichen Modul.

Denk aber an das Problem mit dem Azure Theme, da sind im shop ggf die Masterbilder anklickbar und somit dann ohne wasserzeichen.

Hi!

Ich habe nun massive Probleme mit den Bildern.
Manche Bilder werden nur teilweise geladen, manche werden gar nicht angezeigt.
[B]Das größte Problem jedoch ist, dass im BackEnd bei vielen Artikel auf einmal die falschen Artikelbilder hinterlegt sind und somit auch falsch geladen werden.
Das müssen wir nun alles händisch kontrollieren und anpassen :eek:[/B]

Liegt dies am Wasserzeichen Modul oder liegt da ein Fehler in der 4.5.8 vor?

Gruß
Tobias

Also - ich habe gerade nochmal genau geschaut.
Bei der fehlerhaften Bilddarstellung der Kategorie “Hilde” ist im Backend noch das richtige Bild zugeteilt.

Da muss also beim generieren der Bilder ein Problem vorliegen!
Jemand eine Idee, warum der Fehler auftritt?

Gruß
Tobias

das ist genau das Problem, was ich auch hatte.
Prüf mal ob die Dateien test.jpg und wz.png die richtigen Rechte haben. Ich habe sie so eingestellt, dass jeder lesen, schreiben und ausführen darf. Dann war der Fehler weg