search
HomeBackend DevelopmentPHP TutorialPHP image plus Chinese watermark implementation code_PHP tutorial

PHP image plus Chinese watermark implementation code_PHP tutorial

Jul 13, 2016 am 10:46 AM
phponeChinesecodeaddpicturedeal withaccomplishwatermarkofSimplewantneed

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 {
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

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 “PHP image plus Chinese watermark implementation code_PHP tutorial";
}
else
{
echo “Fail
”;
}
}
}
}

?>


for($a=0;$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...
Statement
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
How can you prevent session fixation attacks?How can you prevent session fixation attacks?Apr 28, 2025 am 12:25 AM

Effective methods to prevent session fixed attacks include: 1. Regenerate the session ID after the user logs in; 2. Use a secure session ID generation algorithm; 3. Implement the session timeout mechanism; 4. Encrypt session data using HTTPS. These measures can ensure that the application is indestructible when facing session fixed attacks.

How do you implement sessionless authentication?How do you implement sessionless authentication?Apr 28, 2025 am 12:24 AM

Implementing session-free authentication can be achieved by using JSONWebTokens (JWT), a token-based authentication system where all necessary information is stored in the token without server-side session storage. 1) Use JWT to generate and verify tokens, 2) Ensure that HTTPS is used to prevent tokens from being intercepted, 3) Securely store tokens on the client side, 4) Verify tokens on the server side to prevent tampering, 5) Implement token revocation mechanisms, such as using short-term access tokens and long-term refresh tokens.

What are some common security risks associated with PHP sessions?What are some common security risks associated with PHP sessions?Apr 28, 2025 am 12:24 AM

The security risks of PHP sessions mainly include session hijacking, session fixation, session prediction and session poisoning. 1. Session hijacking can be prevented by using HTTPS and protecting cookies. 2. Session fixation can be avoided by regenerating the session ID before the user logs in. 3. Session prediction needs to ensure the randomness and unpredictability of session IDs. 4. Session poisoning can be prevented by verifying and filtering session data.

How do you destroy a PHP session?How do you destroy a PHP session?Apr 28, 2025 am 12:16 AM

To destroy a PHP session, you need to start the session first, then clear the data and destroy the session file. 1. Use session_start() to start the session. 2. Use session_unset() to clear the session data. 3. Finally, use session_destroy() to destroy the session file to ensure data security and resource release.

How can you change the default session save path in PHP?How can you change the default session save path in PHP?Apr 28, 2025 am 12:12 AM

How to change the default session saving path of PHP? It can be achieved through the following steps: use session_save_path('/var/www/sessions');session_start(); in PHP scripts to set the session saving path. Set session.save_path="/var/www/sessions" in the php.ini file to change the session saving path globally. Use Memcached or Redis to store session data, such as ini_set('session.save_handler','memcached'); ini_set(

How do you modify data stored in a PHP session?How do you modify data stored in a PHP session?Apr 27, 2025 am 12:23 AM

TomodifydatainaPHPsession,startthesessionwithsession_start(),thenuse$_SESSIONtoset,modify,orremovevariables.1)Startthesession.2)Setormodifysessionvariablesusing$_SESSION.3)Removevariableswithunset().4)Clearallvariableswithsession_unset().5)Destroythe

Give an example of storing an array in a PHP session.Give an example of storing an array in a PHP session.Apr 27, 2025 am 12:20 AM

Arrays can be stored in PHP sessions. 1. Start the session and use session_start(). 2. Create an array and store it in $_SESSION. 3. Retrieve the array through $_SESSION. 4. Optimize session data to improve performance.

How does garbage collection work for PHP sessions?How does garbage collection work for PHP sessions?Apr 27, 2025 am 12:19 AM

PHP session garbage collection is triggered through a probability mechanism to clean up expired session data. 1) Set the trigger probability and session life cycle in the configuration file; 2) You can use cron tasks to optimize high-load applications; 3) You need to balance the garbage collection frequency and performance to avoid data loss.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

SecLists

SecLists

SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

mPDF

mPDF

mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

Atom editor mac version download

Atom editor mac version download

The most popular open source editor

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)