Heim >Backend-Entwicklung >PHP-Tutorial >Fügen Sie PHP-Bildern ein chinesisches Wasserzeichen hinzu, um die gemeinsame Nutzung von Code zu ermöglichen

Fügen Sie PHP-Bildern ein chinesisches Wasserzeichen hinzu, um die gemeinsame Nutzung von Code zu ermöglichen

高洛峰
高洛峰Original
2016-12-01 11:53:271133Durchsuche

Beispiel 1
Code kopieren Der Code lautet wie folgt:
Header("Content-type: image/png"); /*Benachrichtigen Sie den Browser, dass ein Bild erstellt werden soll Ausgabe*/
$im = imagecreate(400, 300); /*Größe des Bildes definieren*/
$gray = ImageColorAllocate($im, 235, 235);
$pink = ImageColorAllocate($im, 255, 128 , 255);
$fontfile = "simkai.ttf";
/* $fontfile-Schriftpfad kann je nach Betriebssystem simhei.ttf (schwarzer Körper) sein, SIMKAI.TTF (kursiv), SIMFANG .TTF (Imitation Song Dynasty), SIMSUN.TTC (Song Dynasty & New Song Dynasty) und andere chinesische Schriftarten, die von GD*/
$str = iconv('GB2312','UTF -8','Chinesisches Wasserzeichen'); /*konvertiert den gb2312-Zeichensatz in UTF-8-Zeichen*/
ImageTTFText($im, 30, 0, 100, 200, $pink, $fontfile, $str);
/* Chinesisches Wasserzeichen hinzufügen*/
Imagepng($im);
ImageDestroy($im);

Beispiel 2
Code kopieren Der Code ist wie folgt:
/ /*********************************** ***** //
// Funktion: Text zum Bild hinzufügen
// Parameter: $img Bilddateiname
// $new_img Speichern Sie den Bilddateinamen. Wenn er leer ist, wird nicht gespeichert das Bild
// $text String-Inhalt
// text_size String-Größe
// text_angle Schriftart-String-Ausgabewinkel
// text_x String-Ausgabe x-Koordinate
// text_y String-Ausgabe y-Koordinate
// Name der $text_font-Schriftartdatei
// $r,$g,$b Zeichenfolgenfarbe RGB-Wert
// ********************* ************ *********** //
function img_text($img, $new_img, $text, $text_size, $text_angle, $text_x, $ text_y, $text_font, $r, $g, $ b){
$text=iconv("gb2312","UTF-8",$text); ");
$im = @imagecreatefromstring( file_get_contents($img)) oder sterben ("Fehler beim Öffnen des Bildes!");
$color = ImageColorAllocate($im, $r,$g,$b) ;
//ImageTTFText(int im, int size , int angle, int x, int y, int col, string fontfile, string text):
//Diese Funktion schreibt TTF-Schriftarttext (TrueType Fonts) in die Bild.
//Parameter: Größe ist die Schriftgröße;
// Winkel ist der Winkel der Schrift, berechnet im Uhrzeigersinn, 0 Grad ist horizontal (von links nach rechts), 90 Grad ist der Text von unten nach top ;
// Die beiden Parameter x und y sind die Koordinatenwerte des Textes (der Ursprung ist die obere linke Ecke);
// col ist die Farbe des Textes; Fontfile ist der Name der Schriftartdatei;
/ /text ist der String-Inhalt.
ImageTTFText($im, $text_size, $text_angle, $text_x, $text_y, $color, $text_font, $text);
if ($new_img==""):
ImageGif($im ); // Das Bild nicht speichern, sondern nur anzeigen
ImageGif($im,$new_img); // Das Bild speichern, aber nicht anzeigen
ImageDestroy ($im); / /Grafiken beenden und Speicherplatz freigeben
}

Beispiel 3
Code kopieren Der Code lautet wie folgt:
/*
* Funktion: PHP-Bildwasserzeichen (Wasserzeichen unterstützt Bilder oder Text)
* Parameter:
* Das Hintergrundbild von $groundImage, also das Bild, das mit einem Wasserzeichen versehen werden muss, unterstützt derzeit nur GIF , JPG, PNG-Formate;
* $waterPos-Wasserzeichenposition, es gibt 10 Zustände, 0 ist eine zufällige Position; ist Mitte links, 5 ist Mitte Mitte, 6 ist Mitte Rechts; 7 bedeutet unten links, 8 bedeutet unten in der Mitte, 9 bedeutet unten rechts; , das als Wasserzeichen verwendete Bild, unterstützt derzeit nur die Formate GIF, JPG und PNG; * $textFont-Textgröße, der Wert ist 1, 2, 3, 4 oder 5, der Standardwert ist 5; * $textColor-Textfarbe, der Wert ist ein hexadezimaler Farbwert, der Standardwert ist #FF0000 (rot);
*
* Hinweis: Unterstützt GD 2.0, unterstützt FreeType, GIF Read, GIF Create, JPG, PNG
* Es ist am besten, $waterImage und $waterText nicht gleichzeitig zu verwenden. Wählen Sie einfach eines davon aus sie und verwenden Sie zuerst $waterImage.
* Wenn $waterImage gültig ist, sind die Parameter $waterString, $stringFont und $stringColor nicht gültig.
* Der Dateiname des mit Wasserzeichen versehenen Bildes ist derselbe wie $groundImage.
* Autor: longware @ 2004-11-3 14:15:13
*/
function imageWaterMark($groundImage,$waterPos=0,$waterImage="",$waterText="",$ textFont=5,$textColor=“#FF0000″)
{
$isWaterImage = FALSE;
$formatMsg = „Dieses Dateiformat wird noch nicht unterstützt, um das Bild in GIF zu konvertieren oder JPG., PNG-Format. ";
//Wasserzeichendatei lesen
if(!emptyempty($waterImage) && file_exists($waterImage))
{
$isWaterImage = TRUE;
$water_info = getimagesize($waterImage);
$water_w = $water_info[0];//Ermitteln Sie die Breite des Wasserzeichenbilds.
$water_h = $water_info[1];//Erhalten Sie die Höhe des Wasserzeichens Bild
switch($water_info[2])//Erhalten Sie das Format des Wasserzeichenbildes
{
case 1:$water_im = imagecreatefromgif($waterImage);break;
case 2:$water_im = imagecreatefromjpeg($ waterImage) ;break;
case 3:$water_im = imagecreatefrompng($waterImage);break;
default:die($formatMsg);
}
//Hintergrundbild lesen
if(!emptyempty($groundImage) && file_exists($groundImage))
{
$ground_info = getimagesize($groundImage);
$ground_w = $ground_info[0];//Den Hintergrund abrufen Bildbreite
$ground_h = $ground_info[1];//Ermitteln Sie die Höhe des Hintergrundbilds
switch($ground_info[2])//Erhalten Sie das Format des Hintergrundbilds
{
Fall 1:$ground_im = imagecreatefromgif($groundImage);break;
Fall 2:$ground_im = imagecreatefromjpeg($groundImage);break;
Fall 3:$ground_im = imagecreatefrompng($groundImage);break; >default:die( $formatMsg);
}
}
else
{
die("Das Bild, das mit einem Wasserzeichen versehen werden muss, existiert nicht!");
}
//Wasserzeichenposition
if($isWaterImage)//Bildwasserzeichen
{
$w = $water_w;
$h = $water_h;
}
else//Textwasserzeichen
{
$temp = imagettfbbox(ceil($textFont*5),0“,./cour.ttf“,$waterText);//Get the Textbereich mit TrueType-Schriftart
$w = $temp[2] - $temp[6]; ;
$label = "Textbereich";
}
if( ($ground_w<$w) || ($ground_h<$h) )
{
echo "Die Länge oder Breitenverhältnis des Bildes, das mit einem Wasserzeichen versehen werden muss. Das Wasserzeichen „.$label“ ist zu klein, um ein Wasserzeichen zu erzeugen! ";
return;
}
switch($waterPos)
{
case 0://random
$posX = rand(0,($ground_w - $w)) ;
$posY = rand(0,($ground_h - $h));
case 1://1 ist oben links
$posY = 0;
break;case 2://2 ist oben zentriert
$posX = ($ground_w - $w) / 2;
Fall 3://3 bedeutet oben rechts
$posX = $ground_w - $w;
$posY = 0;
Fall 4://4 bedeutet Mitte links
$posX = 0;
$posY = ($ground_h - $h) / 2;
break;
case 5://5 ist in der Mitte zentriert
$posX = ($ ground_w - $w) / 2;
$posY = ($ground_h - $h) / 2;
break; $ground_w - $ w;
$posY = ($ground_h - $h) / 2;
case 7://7 ist unten links
$posX = 0; $posY = $ground_h - $h;
break;
case 8://8 ist unten zentriert
$posX = ($ground_w - $w) / 2; - $ h;
break;case 9://9 ist unten rechts
$posX = $ground_w - $w;
default://random
$posX = rand(0,($ground_w - $w));
$posY = rand(0,($ground_h - $h)); ;
}
//Legen Sie den Farbmischmodus des Bildes fest
imagealphablending($ground_im, true);
if($isWaterImage)//Bildwasserzeichen
{
imagecopy( $ground_im , $water_im, $posX, $posY, 0, 0, $water_w,$water_h);//Kopiere das Wasserzeichen in die Zieldatei
}
else//Textwasserzeichen
{
if( ! emptyempty($textColor) && (strlen($textColor)==7) )
{
$R = hexdec(substr($textColor,1,2)); hexdec(substr( $textColor,3,2));
$B = hexdec(substr($textColor,5));
}
else
{
die("Das Wasserzeichen Das Textfarbformat ist falsch! ”);
}
imagestring ( $ground_im, $textFont, $posX, $posY, $waterText, imagecolorallocate($ground_im, $R, $G, $B));
}
//Bild mit Wasserzeichen generieren
@unlink($groundImage);
switch($ground_info[2])//Format des Hintergrundbilds abrufen
{
case 1:imagegif($ground_im, $groundImage);break;
case 2:imagejpeg($ground_im,$groundImage);break
case 3:imagepng($ground_im,$groundImage);break; ;
}
//Speicher freigeben
if(isset($water_info)) unset($water_info);
if(isset($water_im)) imagedestroy($water_im); ($ground_info);
imagedestroy($ground_im>}
//—————————————— — —
$id=$_REQUEST['id'];
$num = count($_FILES['userfile']['name']); ;
print_r($_FILES['userfile']['name']);
echo $num
echo „
“;
for($i=0;$i<$id;$i++){
if(isset($_FILES) && !emptyempty($_FILES['userfile']) && $_FILES['userfile']['size']>0) 

$uploadfile = „./“ .time().“_“.$_FILES['userfile'][name][$i]; 
echo „
“; 
echo $uploadfile; 
if (copy($_FILES['userfile']['tmp_name'][$i], $uploadfile)) 

echo „OK
“; 
//文字水印 
//imageWaterMark($uploadfile,5“,"“,HTTP://www.lvye.info“,5“,#cccccc“); 
//图片水印 
$waterImage=“logo_ok1.gif“;//水印图片路径 
imageWaterMark($uploadfile,9,$waterImage); 
echo „“; 

else 

echo „Fail
“; 




?> 

 
for($a=0;$a<$id;$a++){ 
echo „文件: “; 

?> 
 
 

代码4 
复制代码 代码如下: 
增加中文水印 
/*---------------- --------------------------------------------- 
**描述:这是用于给指定图片加底部水印(不占用图片显示区域)的自定义类,需创建对象调用 
**创建:2007-10-09 
**更新:2007-10 -09片, jpg/jpeg/gif/png, 其它类型不处理 
3、注意图片所在目录的属性必须可写 
4、调用范例: 
$objImg = new MyWaterDownChinese(); 
$objImg->Path = "images/"; 
$objImg->FileName = "1.jpg"; 
$objImg->Text = "HAHAKONGJIAN[url]HTTP://HI.BAIDU.COM/LYSONCN[/url]"; 
$objImg->Font = "./font/simhei.ttf"; 
$objImg->Run(); 
**成员函数: 
---------------------------------------------------- -------------------------*/ 
class MyWaterDownChinese{ 
var $Path = "./"; //图片所在目录相对于调用此类的页面的相对路径 
var $FileName = ""; //图片的名字,如„1.jpg“ 
var $Text = ""; //图片要加上的水印文字,支持中文 
var $TextColor = "#ffffff"; //文字的颜色,gif图片时,字体颜色只能为黑色 
var $TextBgColor = "#000000"; //文字的背景条的颜色 
var $Font = "c://windows//fonts//simhei.ttf"; //字体的存放目录,相对路径 
var $OverFlag = true; //是否要覆盖原图,默认为覆盖,不覆盖时,自动在原图文件名后+"_water_down",如“1.jpg“=> "1_water_down.jpg" 
var $BaseWidth = 200; //图片的宽度至少要>=200,才会加上水印文字。 
//----------- --------------------------------------- 
//功能:类的构造函数(php5.0以上的形式) 
//参数:无 
//返回:无 
function __construct(){;} 
//---------- -------------------------------------------------- ------ 
//功能:类的析构函数(php5.0以上的形式) 
//参数:无 
//返回:无 
function __destruct(){ ;} 
//--------------- --------- 
//---------------------- -------------- 
//功能:对象运行函数,给图片加上水印 
//参数:无 
//返回:无 
Funktion Run() 

if($this->FileName == "" || $this->Text == "") 
return; 
//检测是否安装GD库 
if(false == function_exists("gd_info")) 

echo "系统没有安装GD库,不能给图片加水印." ; 
zurück; 

//设置输入、输出图片路径名 
$arr_in_name = explosion(".",$this->FileName); 
// 
$inImg = $this->Path.$this->FileName; 
$outImg = $inImg; 
$tmpImg = $this->Path.$arr_in_name[0]."_tmp.".$arr_in_name[1]; //临时处理的图片,很重要 
if(!$this->OverFlag) 
$outImg = $this->Path.$arr_in_name[0]."_water_down.".$arr_in_name[1 ]; 
//检测图片是否存在 
if(!file_exists($inImg)) 
return ; 
//Die Attribute des Bildes abrufen
$groundImageType = @getimagesize($inImg);
$imgWidth = $groundImageType[0];
$imgHeight = $groundImageType[1]; = $groundImageType[2];
if($imgWidth < $this->BaseWidth) //Wenn es kleiner als die Grundbreite ist, wird es nicht verarbeitet
return; das Bild ist nicht jpg/jpeg/gif/png, nicht verarbeitet
switch($imgType)
{
Fall 1:
$image = imagecreatefromgif($inImg); >TextBgColor = "#ffffff"; //gif Die Bildschrift kann nur schwarz sein, daher ist die Hintergrundfarbe auf Weiß eingestellt
break
case 2:
$image = imagecreatefromjpeg($inImg) ;
break;
$image = imagecreatefrompng($inImg);
return;
} >//Farbe erstellen
$color = @imagecolorallocate( $image,hexdec(substr($this->TextColor,1,2)),hexdec(substr($this->TextColor,3,2)) ,hexdec(substr($this->TextColor,5, 2))); //Textfarbe
//Erzeuge ein leeres Bild, dessen Höhe um die Wasserzeichenhöhe unten erhöht wird
$newHeight = $imgHeight+20;
$objTmpImg = @imagecreatetruecolor($imgWidth ,$newHeight);
$colorBg = @imagecolorallocate($objTmpImg,hexdec(substr($this->TextBgColor,1,2)), hexdec(substr($this->TextBgColor,3,2)) ,hexdec(substr($this->TextBgColor,5,2))); //Hintergrundfarbe
//Hintergrundfarbe des gefüllten Bildes
@imagefill ($objTmpImg,0,0,$colorBg);
//Kopieren Sie das Originalbild in das temporäre Bild
@imagecopy($objTmpImg,$image,0,0,0,0, $imgWidth,$imgHeight);
//Erstellen Sie das zu schreibende Wasserzeichen-Textobjekt
$objText = $this->createText($this->Text);
//Berechnen Sie die Position des zu schreibenden Wasserzeichentextes
$x = 5;
$ y = $newHeight-5;
//Textwasserzeichen schreiben
@imagettftext($objTmpImg,10,0,$x, $y,$color,$this->Font,$objText);
//Neue Bilder generieren, temporäre Bilder
switch($imgType)
{
Fall 1:
imagegif ($objTmpImg,$tmpImg);
break
imagejpeg($objTmpImg,$tmpImg);
imagepng($objTmpImg, $tmpImg);
break
return;
}
@imagedestroy($objTmpImg); ($image);
//Datei umbenennen
if ($this->OverFlag)
{
//Das Originalbild überschreiben
@unlink($inImg>); @rename($tmpImg,$outImg);
}
else
{
//Das Originalbild nicht überschreiben
@rename($tmpImg,$outImg>}
}
//--------- ----------------------------
/ /Funktion: Wasserzeichen-Textobjekt erstellen
//Parameter: Keine
//Rückgabe: Erstelltes Wasserzeichen-Textobjekt
function createText($instring)
{
$outstring=""
$max=strlen($instring);
for($i =0;$i<$max;$i++)
{
$h=ord($instring[$i]); 🎜>if($h>=160 && $i<$max-1 )
{
$outstring .= "&#".base_convert(bin2hex(iconv("gb2312","ucs-2", substr($instring,$i,2))),16,10) .";";
$i++; $i];
}
return $ outstring;
}//class
?>

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