Ich hatte viele Probleme bei der Implementierung von David-Code. Ich hatte Fehler wie "WP_IMAGE_EDITOR_GD" nicht gefunden, "WatermarkImageEditor" nicht gefunden ... Und als ich es zum Laufen brachte, funktionierte es nicht mit Alpha-Kanal-PNG, so dass ich viele Stunden verloren habe, damit es mit ihnen funktioniert. Also werde ich erklären, wie ich es habe.
Fügen Sie all diesen Code in eine PHP-Datei ein, meine heißt watermark.php.
<?php
class WatermarkImageEditor extends WP_Image_Editor_GD {
public function stamp_watermark( $stampPath, $marginH=0, $marginV=0 ) {
$loaded = $this->load();
if ( is_wp_error( $loaded ) ) return $loaded;
$stamp=imagecreatefrompng( $stampPath );
if(is_wp_error($stamp)){ return $stamp; }
imagealphablending($stamp, true);
$sx = imagesx( $stamp );
$sy = imagesy( $stamp );
imagealphablending($this->image, true);
imagecopy(
$this->image, $stamp,$marginH,$this->size['height']-$sy-$marginV,0,0,$sx, $sy
);
}
public static function test( $args = [] ) { return parent::test( $args ); }
public static function supports_mime_type( $mime_type ) { return parent::supports_mime_type( $mime_type ); }
}
Jetzt müssen wir den Filter registrieren. Ich verwende es in meinem eigenen Plugin, daher habe ich diesen Code in meiner Haupt-Plugin-Datei, aber Sie können ihn auch an einer anderen Stelle wie functions.php ablegen. Beachten Sie, dass ich require_once verwende, um watermark.php zu laden, daher muss sich watermark.php im selben Ordner befinden.
add_filter( 'wp_image_editors', function( $editors ) {
require_once __DIR__. '/watermark.php';
if ( ! is_array( $editors ) )
return $editors; //someone broke the filtered value
array_unshift( $editors, "WatermarkImageEditor");
return $editors;
} );
Rufen Sie im letzten Schritt stamp_watermark () auf. In diesem Beispiel lade ich ein Bild von der Festplatte, ändere die Größe, setze das Wasserzeichen und speichere es. Beachten Sie, dass stamp_watermark () für den ersten Parameter den Pfad oder die URL des Wasserzeichens empfängt. Die anderen beiden Parameter sind der optionale Rand.
$editor= wp_get_image_editor($imagePath);
$editor->resize(1920, 1080, TRUE);
if(is_callable([$editor,'stamp_watermark'])){
$success = $editor->stamp_watermark( ABSPATH.'wp-content/uploads/watermark-full.png', 20, 20 );
if(!is_wp_error($success)){ $editor->save($imagePath); }
}