Heim  >  Artikel  >  Backend-Entwicklung  >  So verwenden Sie das MagickWand-Modul, um Bildern in PHP Wasserzeichen hinzuzufügen

So verwenden Sie das MagickWand-Modul, um Bildern in PHP Wasserzeichen hinzuzufügen

墨辰丷
墨辰丷Original
2018-06-07 17:05:191620Durchsuche

In diesem Artikel wird hauptsächlich die Verwendung des MagickWand-Moduls in PHP zum Bedienen von Bildern und zum Hinzufügen von Wasserzeichen vorgestellt. Ich hoffe, dass es für alle hilfreich ist.

Bei der Verwendung von PHP-Programmierung ist es häufig erforderlich, dem hochgeladenen Bild ein Wasserzeichen hinzuzufügen, um das Urheberrecht und die Quelle des Bildes zu ermitteln. Im Allgemeinen befindet sich das Wasserzeichen jedoch in der unteren rechten Ecke des Bildes. aber unterschiedliche Bilder Die Farbstufen sind unterschiedlich. Manchmal hat das Wasserzeichen unserer Bilder die gleiche Farbstufe wie das Bild selbst, was dazu führt, dass das Wasserzeichen unauffällig ist.

Der folgende Code kann die Farbstufen automatisch identifizieren Das Bild und das Hinzufügen von Bildern basierend auf dem Farbniveauunterschied können die gleichen Nachteile von Wasserzeichen und Bildfarbskala vermeiden.

<?php
 function add_wm($nmw_water, $src_file, $output_file, $x, $y) {
 if(file_exists($output_file))
 return;
 $w1 = MagickGetImageWidth($nmw_water);
 $h1 = MagickGetImageHeight($nmw_water);
 $nmw =NewMagickWand();
 MagickReadImage($nmw, $src_file);
 // 默认的加水印位置调整
 $lt_w = 50;
 $lt_h = 50;
 if($x == 0){
 $w = MagickGetImageWidth($nmw);
 $h = MagickGetImageHeight($nmw);
 $x = $w;
 $y = $h;
 }else{
 // 根据具体情况调整
 $lt_w = 30;
 $lt_h = 40;
 }
 MagickCompositeImage($nmw, $nmw_water, MW_OverCompositeOp, $x - $w1 - $lt_w, $y - $h1 - $lt_h);
 MagickWriteImage($nmw, $output_file);
 DestroyMagickWand($nmw);
 }
 // 还是groovy的eachFileRecurse好用啊
 function add_wm_recurse($nmw_water, $to_dir, $output_dir, $arr) {
 $dp = dir($to_dir);
 while($file=$dp->read()){
 if($file != &#39;.&#39; && $file != &#39;..&#39;){
 if(is_dir($to_dir . &#39;/&#39; . $file)){
  mkdir($output_dir . &#39;/&#39; . $file);
  add_wm_recurse($nmw_water, $to_dir . &#39;/&#39; . $file, $output_dir . &#39;/&#39; . $file, $arr);
 }else{
  if(!array_key_exists($to_dir . &#39;/&#39; . $file, $arr)){
  continue;
  }
  $sub_arr = $arr[$to_dir . &#39;/&#39; . $file];
  if($sub_arr){
  $x = intval($sub_arr[0]);
  $y = intval($sub_arr[1]);
  add_wm($nmw_water, $to_dir . &#39;/&#39; . $file, $output_dir . &#39;/&#39; . $file, $x, $y);
  }
 }
 }
 }
 $dp->close();
 }
 $to_dir = &#39;./resized&#39;;
 $output_dir = &#39;./output&#39;;
 // 这个是我用java的ImageIO遍历图片像素获取的符合裤子颜色的区域的坐标array(posX, posY)
 $arr = array(
 array(50, 50)
 );
 $water = &#39;./water.png&#39;;
 $nmw_water =NewMagickWand();
 MagickReadImage($nmw_water, $water);
 add_wm_recurse($nmw_water, $to_dir, $output_dir, $arr);
 DestroyMagickWand($nmw_water);
?>

Hinzugefügt:

Verwendung des PHP-Bildverarbeitungsmoduls MagickWand

MagickWand ist ein PHP-Modul, das für den Zugriff auf die Bildverarbeitungsbibliothek von ImageMagick verwendet wird. Das Folgende ist ein Codeausschnitt mit MagicWand:

$magick_wand=NewMagickWand();
MagickReadImage($magick_wand,&#39;rose.jpg&#39;);
$drawing_wand=NewDrawingWand();
DrawSetFont($drawing_wand,"/usr/share/fonts/bitstream-vera/Vera.ttf");
DrawSetFontSize($drawing_wand,20);
DrawSetGravity($drawing_wand,MW_CenterGravity);
$pixel_wand=NewPixelWand();
PixelSetColor($pixel_wand,"white");
DrawSetFillColor($drawing_wand,$pixel_wand);
if (MagickAnnotateImage($magick_wand,$drawing_wand,0,0,0,"Rose") != 0)
{
 MagickEchoImageBlob( $magick_wand );
}
else
{
 echo MagickGetExceptionString($magick_wand);
}
?>

Installationsmethode:

1. Laden Sie php_magickwand_q16_st.dll für 5.2.x herunter
2. Platzieren Sie es im PHP-Erweiterungsverzeichnis
3. Fügen Sie extension=php_magickwand_q16_st.dll zur php.ini-Datei hinzu
4. Starten Sie Apache neu

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Lernen aller hilfreich sein wird.

Verwandte Empfehlungen:

PHP-Datei-Upload-Klassenfreigabe_php-Beispiel

Detaillierte Erläuterung der PHP-Paging-Klasse mit Beispielen

Detaillierte Erläuterung der PHP-Warenkorbklasse mit einer Speicherdauer von einem Tag

Das obige ist der detaillierte Inhalt vonSo verwenden Sie das MagickWand-Modul, um Bildern in PHP Wasserzeichen hinzuzufügen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn