Home > Backend Development > PHP Tutorial > PHP image plus Chinese watermark implementation code_PHP tutorial

PHP image plus Chinese watermark implementation code_PHP tutorial

WBOY
Release: 2016-07-13 10:46:19
Original
936 people have browsed it

To add Chinese watermarks in PHP, you need to do some simple processing. One is to convert characters into gbk, and the other is to load Chinese fonts. With these two conditions, adding Chinese watermarks to pictures is simple.

Example 1

The code is as follows Copy code
 代码如下 复制代码

Header("Content-type: image/png"); /*通知浏览器,要输出图像*/
$im = imagecreate(400 , 300); /*定义图像的大小*/
$gray = ImageColorAllocate($im , 235 , 235 , 235);
$pink = ImageColorAllocate($im, 255 , 128 , 255);

$fontfile = "simkai.ttf";

/* $fontfile 字体的路径,视操作系统而定,可以是 simhei.ttf(黑体) , SIMKAI.TTF(楷体) , SIMFANG.TTF(仿宋) ,SIMSUN.TTC(宋体&新宋体) 等 GD 支持的中文字体*/
$str = iconv('GB2312','UTF-8','中文水印'); /*将 gb2312 的字符集转换成 UTF-8 的字符*/
ImageTTFText($im, 30, 0, 100, 200, $pink , $fontfile , $str);
/* 加入中文水印 */
Imagepng($im);
ImageDestroy($im);
?>

Header("Content-type: image/png"); /*Notify the browser that an image is to be output*/
$im = imagecreate(400, 300); /*Define the size of the image*/
$gray = ImageColorAllocate($im, 235, 235, 235);
$pink = ImageColorAllocate($im, 255, 128, 255);

$fontfile = "simkai.ttf";
代码如下 复制代码

// **************************************** //
// 功能:给图片添加文字
// 参数: $img 图片文件名
// $new_img 另存图片文件名,如果为空表示不另存图片
// $text 字符串内容
// text_size 字符串大小
// text_angle 字型串输出角度
// text_x 字符串输出 x 坐标
// text_y 字符串输出 y 坐标
// $text_font 字型文件名
// $r,$g,$b 字符串颜色RGB值
// **************************************** //
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);
Header("Content-type: image/gif");
$im = @imagecreatefromstring(file_get_contents($img)) or die ("打开图片失败!");
$color = ImageColorAllocate($im, $r,$g,$b);

//ImageTTFText(int im, int size, int angle, int x, int y, int col, string fontfile, string text):
//本函数将 TTF (TrueType Fonts) 字型文字写入图片。
//参数: size 为字形的尺寸;
// angle 为字型的角度,顺时针计算,0 度为水平(由左到右),90 度则为由下到上的文字;
// x,y 二参数为文字的坐标值 (原点为左上角);
// col 为字的颜色;
// fontfile 为字型文件名称;
// text 是字符串内容。
ImageTTFText($im, $text_size, $text_angle, $text_x, $text_y, $color, $text_font, $text);

if ($new_img==""):
ImageGif($im); // 不保存图片,只显示
else:
ImageGif($im,$new_img); // 保存图片,但不显示
endif;

ImageDestroy($im); //结束图形,释放内存空间
}
?>

/* $fontfile The path of the font, depending on the operating system, can be simhei.ttf (Helvetica), SIMKAI.TTF (Kaili), SIMFANG.TTF (Imitation Song Dynasty), SIMSUN.TTC (Song Dynasty & New Song Dynasty), etc. Chinese fonts supported by GD*/
$str = iconv('GB2312','UTF-8','Chinese watermark'); /*Convert gb2312 character set to UTF-8 characters*/
ImageTTFText($im, 30, 0, 100, 200, $pink, $fontfile, $str);
/* Add Chinese watermark */
Imagepng($im);
ImageDestroy($im);
?> Example 2
The code is as follows Copy code
// **************************************** //
// Function: Add text to pictures
// Parameter: $img image file name
// $new_img Save the image file name. If it is empty, it means not to save the image
// $text string content
// text_size string size
// text_angle font string output angle
// text_x string output x coordinate
// text_y string output y coordinate
// $text_font font file name
// $r,$g,$b string color RGB value
// **************************************** //
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);
Header("Content-type: image/gif");
$im = @imagecreatefromstring(file_get_contents($img)) or die ("Failed to open image!");
$color = ImageColorAllocate($im, $r,$g,$b);<🎜> <🎜>//ImageTTFText(int im, int size, int angle, int x, int y, int col, string fontfile, string text):
//This function writes TTF (TrueType Fonts) font text into the image.
//Parameter: size is the size of the glyph;
// angle is the angle of the font, calculated clockwise, 0 degrees is horizontal (from left to right), 90 degrees is the text from bottom to top;
// The two parameters x and y are the coordinate values ​​of the text (the origin is the upper left corner);
// col is the color of the word;
// fontfile is the name of the font file;
// text is the string content.
ImageTTFText($im, $text_size, $text_angle, $text_x, $text_y, $color, $text_font, $text);<🎜> <🎜>if ($new_img==""):
ImageGif($im); //Do not save the image, only display it
else:
ImageGif($im,$new_img); // Save the image but do not display it
endif;<🎜> <🎜>ImageDestroy($im); //End graphics and release memory space
}
?>

Example 3

The code is as follows Copy code

/*
* Function: PHP image watermark (watermark supports images or text)
* Parameters:
* $groundImage background image, that is, the image that needs to be watermarked, currently only supports GIF, JPG, and PNG formats;
* $waterPos watermark position, there are 10 states, 0 is a random position;
* 1 means top left, 2 means top center, 3 means top right;
* 4 means the center is on the left, 5 means the middle is on the center, and 6 means the center is on the right;
* 7 means the bottom is on the left, 8 means the bottom is in the center, and 9 means the bottom is on the right;
* $waterImage image watermark, that is, the image used as a watermark, currently only supports GIF, JPG, and PNG formats;
* $waterText text watermark, that is, text is used as a watermark, supports ASCII code, does not support Chinese;
* $textFont text size, value is 1, 2, 3, 4 or 5, default is 5;
* $textColor text color, the value is a hexadecimal color value, the default is #FF0000 (red);
*
* Note: Support GD 2.0, Support FreeType, GIF Read, GIF Create, JPG, PNG
* It is best not to use $waterImage and $waterText at the same time. Just choose one of them. Use $waterImage first.
* When $waterImage is valid, the parameters $waterString, $stringFont, and $stringColor are not valid.
* The file name of the watermarked image is the same as $groundImage.
* Author: longware @ 2004-11-3 14:15:13
*/
function imageWaterMark($groundImage,$waterPos=0,$waterImage=””,$waterText=””,$textFont=5,$textColor=”#FF0000″)
{
$isWaterImage = FALSE;
$formatMsg = "This file format is not supported yet. Please use image processing software to convert the image to GIF, JPG, or PNG format.";

//Read watermark file
if(!emptyempty($waterImage) && file_exists($waterImage))
{
$isWaterImage = TRUE;
$water_info = getimagesize($waterImage);
$water_w = $water_info[0];//Get the width of the watermark image
$water_h = $water_info[1];//Get the height of the watermark image

switch($water_info[2])//Get the format of the watermark image
{
case 1:$water_im = imagecreatefromgif($waterImage);break;
case 2:$water_im = imagecreatefromjpeg($waterImage);break;
case 3:$water_im = imagecreatefrompng($waterImage);break;
default:die($formatMsg);
}
}

//Read background image
if(!emptyempty($groundImage) && file_exists($groundImage))
{
$ground_info = getimagesize($groundImage);
$ground_w = $ground_info[0];//Get the width of the background image
$ground_h = $ground_info[1];//Get the height of the background image

switch($ground_info[2])//Get the format of the background image
{
case 1:$ground_im = imagecreatefromgif($groundImage);break;
case 2:$ground_im = imagecreatefromjpeg($groundImage);break;
case 3:$ground_im = imagecreatefrompng($groundImage);break;
default:die($formatMsg);
}
}
else
{
die("The picture that needs to be watermarked does not exist!");
}

//Watermark position
if($isWaterImage)//Image watermark
{
$w = $water_w;
$h = $water_h;
$label = "Picture";
}
else//text watermark
{
$temp = imagettfbbox(ceil($textFont*5),0,”./cour.ttf”,$waterText);//Get the range of text using TrueType font
$w = $temp[2] - $temp[6];
$h = $temp[3] - $temp[7];
unset($temp);
$label = "text area";
}
if( ($ground_w<$w) || ($ground_h<$h) )
{
echo "The length or width of the image that needs to be watermarked is smaller than the watermark ".$label.", so the watermark cannot be generated!";
return;
}
switch($waterPos)
{
case 0://random
$posX = rand(0,($ground_w - $w));
$posY = rand(0,($ground_h - $h));
break;
case 1://1 is top left
$posX = 0;
$posY = 0;
break;
case 2://2 is top-centered
$posX = ($ground_w - $w) / 2;
$posY = 0;
break;
case 3://3 means top right
$posX = $ground_w - $w;
$posY = 0;
break;
case 4://4 means the center is on the left
$posX = 0;
$posY = ($ground_h - $h) / 2;
break;
case 5://5 is centered in the middle
$posX = ($ground_w - $w) / 2;
$posY = ($ground_h - $h) / 2;
break;
case 6://6 means the center is on the right
$posX = $ground_w - $w;
$posY = ($ground_h - $h) / 2;
break;
case 7://7 means the bottom is on the left
$posX = 0;
$posY = $ground_h - $h;
break;
case 8://8 is bottom centered
$posX = ($ground_w - $w) / 2;
$posY = $ground_h - $h;
break;
case 9://9 means the bottom is on the right
$posX = $ground_w - $w;
$posY = $ground_h - $h;
break;
default://random
$posX = rand(0,($ground_w - $w));
$posY = rand(0,($ground_h - $h));
break;
}

//Set the color mixing mode of the image
imagealphablending($ground_im, true);

if($isWaterImage)//Image watermark
{
imagecopy($ground_im, $water_im, $posX, $posY, 0, 0, $water_w,$water_h);//Copy the watermark to the target file
}
else//text watermark
{
if( !emptyempty($textColor) && (strlen($textColor)==7) )
{
$R = hexdec(substr($textColor,1,2));
$G = hexdec(substr($textColor,3,2));
$B = hexdec(substr($textColor,5));
}
else
{
die("The watermark text color format is incorrect!");
}
imagestring ($ground_im, $textFont, $posX, $posY, $waterText, imagecolorallocate($ground_im, $R, $G, $B));
}

//The image after generating the watermark
@unlink($groundImage);
switch($ground_info[2])//Get the format of the background image
{
case 1:imagegif($ground_im,$groundImage);break;
case 2:imagejpeg($ground_im,$groundImage);break;
case 3:imagepng($ground_im,$groundImage);break;
default:die($errorMsg);
}

//Release memory
if(isset($water_info)) unset($water_info);
if(isset($water_im)) imagedestroy($water_im);
unset($ground_info);
imagedestroy($ground_im);
}
//——————————————————————————————
$id=$_REQUEST['id'];
$num = count($_FILES['userfile']['name']);
print_r($_FILES['userfile']);
print_r($_FILES['userfile']['name']);

echo $num;
echo “
”;
if(isset($id)){
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
”;

//Text watermark
//imageWaterMark($uploadfile,5,"","HTTP://www.lvye.info",5,"#cccccc");

//Picture watermark
$waterImage=”logo_ok1.gif”;//Watermark image path
imageWaterMark($uploadfile,9,$waterImage);

echo “";
}
else
{
echo “Fail
”;
}
}
}
}

?>


for($a=0;$a<$id;$a++){
echo “File:
”;

}
?>

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/632964.htmlTechArticleTo add watermark to Chinese in php, some simple processing is required. One is to convert the characters into gbk, and also Yes, you need to load Chinese fonts. With these two conditions, you can add Chinese watermarks to pictures...
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template