php给图片加文字
在图片上加文字是论坛,博客,新闻网站上最喜欢用的功能,防止盗图。这里看看代码是如何实现的。
首先还是upload_image.php这个文件,注意这里的caption文本框中输入的内容最终会写到图片上面
<?php
//修改图片效果
$db = mysql_connect('localhost','root','Ctrip07185419') or die('can not connect to database');
mysql_select_db('moviesite',$db) or die(mysql_error($db));
//上传文件的路径
$dir = 'D:\Serious\phpdev\test\images';
//设置环境变量
//putenv('GDFONTPATH='.'C:\Windows\Fonts');
$font = "C:\Windows\Fonts\arial.ttf"; //upload_image.php页面传递过来的参数,如果是上传图片
if($_POST['submit'] == 'Upload')
{
if($_FILES['uploadfile']['error'] != UPLOAD_ERR_OK)
{
switch($_FILES['uploadfile']['error'])
{
case UPLOAD_ERR_INI_SIZE:
die('The uploaded file exceeds the upload_max_filesize directive');
break;
case UPLOAD_ERR_FORM_SIZE:
die('The upload file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form');
break;
case UPLOAD_ERR_PARTIAL:
die('The uploaded file was only partially uploaded');
break;
case UPLOAD_ERR_NO_FILE:
die('No file was uploaded');
break;
case UPLOAD_ERR_NO_TMP_DIR:
die('The server is missing a temporary folder');
break;
case UPLOAD_ERR_CANT_WRITE:
die('The server fail to write the uploaded file to the disk');
break;
case UPLOAD_ERR_EXTENSION:
die('The upload stopped by extension');
break;
}
}
$image_caption = $_POST['caption'];
$image_username = $_POST['username'];
$image_date = date('Y-m-d');
list($width,$height,$type,$attr) = getimagesize($_FILES['uploadfile']['tmp_name']);
$error = 'The file you upload is not a supported filetype';
switch($type)
{
case IMAGETYPE_GIF:
$image = imagecreatefromgif($_FILES['uploadfile']['tmp_name']) or die($error);
break;
case IMAGETYPE_JPEG:
$image = imagecreatefromjpeg($_FILES['uploadfile']['tmp_name']) or die($error);
break;
case IMAGETYPE_PNG:
$image = imagecreatefrompng($_FILES['uploadfile']['tmp_name']) or die($error);
break;
default:
break;
}
$query = 'insert into images(image_caption,image_username,image_date) values("'.$image_caption.'" , "'.$image_username.'","'.$image_date.'")';
$result = mysql_query($query,$db) or die(mysql_error($db));
$last_id = mysql_insert_id(); // $imagename = $last_id.'.jpg';
// imagejpeg($image,$dir.'/'.$imagename);
// imagedestroy($image); $image_id = $last_id;
imagejpeg($image , $dir.'/'.$image_id.'.jpg');
imagedestroy($image);
}
else //如果图片已经上传,则从数据库中取图片名字
{
$query = 'select image_id,image_caption,image_username,image_date from images where image_id='.$_POST['id'];
$result = mysql_query($query,$db) or die(mysql_error($db));
extract(mysql_fetch_assoc($result));
list($width,$height,$type,$attr) = getimagesize($dir.'/'.$image_id.'.jpg');
} //如果是保存图片
if($_POST['submit'] == 'Save')
{
if(isset($_POST['id']) && ctype_digit($_POST['id']) && file_exists($dir.'/'.$_POST['id'].'.jpg'))
{
$image = imagecreatefromjpeg($dir.'/'.$_POST['id'].'.jpg');
}
else
{
die('invalid image specified');
}
$effect = (isset($_POST['effect'])) ? $_POST['effect'] : -1;
switch($effect)
{
case IMG_FILTER_NEGATE:
imagefilter($image , IMG_FILTER_NEGATE); //将图像中所有颜色反转
break;
case IMG_FILTER_GRAYSCALE:
imagefilter($image , IMG_FILTER_GRAYSCALE); //将图像转换为灰度的
break;
case IMG_FILTER_EMBOSS:
imagefilter($image , IMG_FILTER_EMBOSS); //使图像浮雕化
break;
case IMG_FILTER_GAUSSIAN_BLUR:
imagefilter($image , IMG_FILTER_GAUSSIAN_BLUR); //用高斯算法模糊图像
break;
} if(isset($_POST['emb_caption']))
{
imagettftext($image , 12 , 0 , 20 , 20 , 0 , $font , $image_caption);
} imagejpeg($image , $dir.'/'.$_POST['id'].'.jpg' , 100);
?>
<html>
<head>
<title>Here is your pic!</title>
</head>
<body>
<h1>Your image has been saved!</h1>
<img src="data:images/<?php echo $_POST['id'];?>.jpg" alt="" />
</body>
</html>
<?php
}
else
{
?>
<html>
<head>
<title>Here is your pic!</title>
</head>
<body>
<h1>So how does it feel to be famous?</h1>
<p>Here is the picture you just uploaded to your servers:</p>
<!--<img src="data:images/<?php echo $imagename;?>" alt="" style="float:left;" />-->
</body>
</html>
<?php
if($_POST['submit'] == 'Upload')
{
$imagename = 'images/'.$image_id.'.jpg';
}
else
{
$imagename = 'image_effect.php?id='.$image_id.'&e='.$_POST['effect'];
if(isset($_POST['emb_caption']))
{
$imagename .= '&capt='.urlencode($image_caption);
}
}
?>
<img src="<?php echo $imagename;?>" style="float:left;" alt="" />
<table>
<tr>
<td>Image save as:</td>
<td><?php $image_id?></td>
</tr>
<tr>
<td>Height:</td>
<td><?php echo $height;?></td>
</tr>
<tr>
<td>Widht:</td>
<td><?php echo $width;?></td>
</tr>
<tr>
<td>Upload date:</td>
<td><?php echo $image_date;?></td>
</tr>
</table>
<p>You may apply a special effect to your image from the list of option below.
Note:saving an image with any of the filters applied <em>can be undone</em>
</p>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<div>
<input type="hidden" name="id" value="<?php echo $image_id;?>"/>
Filter:<select name="effect" id="">
<option value="-1">None</option>
<?php
echo '<option value="'.IMG_FILTER_GRAYSCALE.'" ';
if(isset($_POST['effect']) && $_POST['effect'] == IMG_FILTER_GRAYSCALE)
{
echo 'selected="selected"';
}
echo ' >Black and white</option>'; echo '<option value="'.IMG_FILTER_GAUSSIAN_BLUR.'"';
if(isset($_POST['effect']) && $_POST['effect'] == IMG_FILTER_GAUSSIAN_BLUR)
{
echo ' selected="selected"';
}
echo '>Blur</option>'; echo '<option value="'.IMG_FILTER_EMBOSS.'"';
if(isset($_POST['effect']) && $_POST['effect'] == IMG_FILTER_EMBOSS)
{
echo 'selected="selected"';
}
echo '>Emboss</option>'; echo '<option value="'.IMG_FILTER_NEGATE.'"';
if(isset($_POST['effect']) && $_POST['effect'] == IMG_FILTER_NEGATE)
{
echo 'selected="selected"';
}
echo '>Negative</option>';
?>
</select><br />
<?php
echo '<input type="checkbox" name="emb_caption"';
if(isset($_POST['emb_caption']))
{
echo ' checked="checked"';
}
echo ' />Embed caption in image?';
?>
<input type="submit" value="Preview" name="submit" /><br /><br />
<input type="submit" value="Save" name="submit" /> </div>
</form>
<?php
}
?>
注意这里有个问题,选择字体的时要加上绝对路径并且带上后缀.tff,否则的话是看不到图片的,下面的代码是image_effect.php
<?php
//修改图片效果
$db = mysql_connect('localhost','root','Ctrip07185419') or die('can not connect to database');
mysql_select_db('moviesite',$db) or die(mysql_error($db));
//上传文件的路径
$dir = 'D:\Serious\phpdev\test\images';
//设置环境变量
//putenv('GDFONTPATH='.'C:\Windows\Fonts');
$font = "C:\Windows\Fonts\arial.ttf"; //upload_image.php页面传递过来的参数,如果是上传图片
if($_POST['submit'] == 'Upload')
{
if($_FILES['uploadfile']['error'] != UPLOAD_ERR_OK)
{
switch($_FILES['uploadfile']['error'])
{
case UPLOAD_ERR_INI_SIZE:
die('The uploaded file exceeds the upload_max_filesize directive');
break;
case UPLOAD_ERR_FORM_SIZE:
die('The upload file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form');
break;
case UPLOAD_ERR_PARTIAL:
die('The uploaded file was only partially uploaded');
break;
case UPLOAD_ERR_NO_FILE:
die('No file was uploaded');
break;
case UPLOAD_ERR_NO_TMP_DIR:
die('The server is missing a temporary folder');
break;
case UPLOAD_ERR_CANT_WRITE:
die('The server fail to write the uploaded file to the disk');
break;
case UPLOAD_ERR_EXTENSION:
die('The upload stopped by extension');
break;
}
}
$image_caption = $_POST['caption'];
$image_username = $_POST['username'];
$image_date = date('Y-m-d');
list($width,$height,$type,$attr) = getimagesize($_FILES['uploadfile']['tmp_name']);
$error = 'The file you upload is not a supported filetype';
switch($type)
{
case IMAGETYPE_GIF:
$image = imagecreatefromgif($_FILES['uploadfile']['tmp_name']) or die($error);
break;
case IMAGETYPE_JPEG:
$image = imagecreatefromjpeg($_FILES['uploadfile']['tmp_name']) or die($error);
break;
case IMAGETYPE_PNG:
$image = imagecreatefrompng($_FILES['uploadfile']['tmp_name']) or die($error);
break;
default:
break;
}
$query = 'insert into images(image_caption,image_username,image_date) values("'.$image_caption.'" , "'.$image_username.'","'.$image_date.'")';
$result = mysql_query($query,$db) or die(mysql_error($db));
$last_id = mysql_insert_id(); // $imagename = $last_id.'.jpg';
// imagejpeg($image,$dir.'/'.$imagename);
// imagedestroy($image); $image_id = $last_id;
imagejpeg($image , $dir.'/'.$image_id.'.jpg');
imagedestroy($image);
}
else //如果图片已经上传,则从数据库中取图片名字
{
$query = 'select image_id,image_caption,image_username,image_date from images where image_id='.$_POST['id'];
$result = mysql_query($query,$db) or die(mysql_error($db));
extract(mysql_fetch_assoc($result));
list($width,$height,$type,$attr) = getimagesize($dir.'/'.$image_id.'.jpg');
} //如果是保存图片
if($_POST['submit'] == 'Save')
{
if(isset($_POST['id']) && ctype_digit($_POST['id']) && file_exists($dir.'/'.$_POST['id'].'.jpg'))
{
$image = imagecreatefromjpeg($dir.'/'.$_POST['id'].'.jpg');
}
else
{
die('invalid image specified');
}
$effect = (isset($_POST['effect'])) ? $_POST['effect'] : -1;
switch($effect)
{
case IMG_FILTER_NEGATE:
imagefilter($image , IMG_FILTER_NEGATE); //将图像中所有颜色反转
break;
case IMG_FILTER_GRAYSCALE:
imagefilter($image , IMG_FILTER_GRAYSCALE); //将图像转换为灰度的
break;
case IMG_FILTER_EMBOSS:
imagefilter($image , IMG_FILTER_EMBOSS); //使图像浮雕化
break;
case IMG_FILTER_GAUSSIAN_BLUR:
imagefilter($image , IMG_FILTER_GAUSSIAN_BLUR); //用高斯算法模糊图像
break;
} if(isset($_POST['emb_caption']))
{
imagettftext($image , 12 , 0 , 20 , 20 , 0 , $font , $image_caption);
} imagejpeg($image , $dir.'/'.$_POST['id'].'.jpg' , 100);
?>
<html>
<head>
<title>Here is your pic!</title>
</head>
<body>
<h1>Your image has been saved!</h1>
<img src="data:images/<?php echo $_POST['id'];?>.jpg" alt="" />
</body>
</html>
<?php
}
else
{
?>
<html>
<head>
<title>Here is your pic!</title>
</head>
<body>
<h1>So how does it feel to be famous?</h1>
<p>Here is the picture you just uploaded to your servers:</p>
<!--<img src="data:images/<?php echo $imagename;?>" alt="" style="float:left;" />-->
</body>
</html>
<?php
if($_POST['submit'] == 'Upload')
{
$imagename = 'images/'.$image_id.'.jpg';
}
else
{
$imagename = 'image_effect.php?id='.$image_id.'&e='.$_POST['effect'];
if(isset($_POST['emb_caption']))
{
$imagename .= '&capt='.urlencode($image_caption);
}
}
?>
<img src="<?php echo $imagename;?>" style="float:left;" alt="" />
<table>
<tr>
<td>Image save as:</td>
<td><?php $image_id?></td>
</tr>
<tr>
<td>Height:</td>
<td><?php echo $height;?></td>
</tr>
<tr>
<td>Widht:</td>
<td><?php echo $width;?></td>
</tr>
<tr>
<td>Upload date:</td>
<td><?php echo $image_date;?></td>
</tr>
</table>
<p>You may apply a special effect to your image from the list of option below.
Note:saving an image with any of the filters applied <em>can be undone</em>
</p>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<div>
<input type="hidden" name="id" value="<?php echo $image_id;?>"/>
Filter:<select name="effect" id="">
<option value="-1">None</option>
<?php
echo '<option value="'.IMG_FILTER_GRAYSCALE.'" ';
if(isset($_POST['effect']) && $_POST['effect'] == IMG_FILTER_GRAYSCALE)
{
echo 'selected="selected"';
}
echo ' >Black and white</option>'; echo '<option value="'.IMG_FILTER_GAUSSIAN_BLUR.'"';
if(isset($_POST['effect']) && $_POST['effect'] == IMG_FILTER_GAUSSIAN_BLUR)
{
echo ' selected="selected"';
}
echo '>Blur</option>'; echo '<option value="'.IMG_FILTER_EMBOSS.'"';
if(isset($_POST['effect']) && $_POST['effect'] == IMG_FILTER_EMBOSS)
{
echo 'selected="selected"';
}
echo '>Emboss</option>'; echo '<option value="'.IMG_FILTER_NEGATE.'"';
if(isset($_POST['effect']) && $_POST['effect'] == IMG_FILTER_NEGATE)
{
echo 'selected="selected"';
}
echo '>Negative</option>';
?>
</select><br />
<?php
echo '<input type="checkbox" name="emb_caption"';
if(isset($_POST['emb_caption']))
{
echo ' checked="checked"';
}
echo ' />Embed caption in image?';
?>
<input type="submit" value="Preview" name="submit" /><br /><br />
<input type="submit" value="Save" name="submit" /> </div>
</form>
<?php
}
?>
这里如果我们写成下面这样
putenv('GDFONTPATH='.'C:\Windows\Fonts');
$font = "arial";
是看不到效果的,这里顺便提一下,火狐是最佳的开发工具,怎么讲呢,看看下面的对比吧。
火狐的提示是这样的:

图片没有截完整提示是:The image “http://localhost:81/test/image_effect.php?id=31&e=-1&capt=you+are+big+bitch” cannot be displayed because it contains errors.
谷歌浏览器的显示如下:

一个未能正确显示的图片,什么信息都没有。
再来看看大IE的,如下:

也能看到错误信息,但是一大堆乱码啊!
所以说开发人员好帮手还是火狐。
php给图片加文字的更多相关文章
- PHP给图片加文字水印
<?php /*给图片加文字水印的方法*/ $dst_path = 'http://f4.topitme.com/4/15/11/1166351597fe111154l.jpg'; $dst = ...
- Java图片加文字水印
Java图片加文字水印 import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.I ...
- C#给图片加文字水印
public class TxtWaterMark { public enum WaterPositionMode { LeftTop,//左上 LeftBottom,//左下 RightTop,// ...
- ASP.NET(C#)图片加文字、图片水印,神啊,看看吧
ASP.NET(C#)图片加文字.图片水印 一.图片上加文字: //using System.Drawing; //using System.IO; //using System.Drawing.Im ...
- C#给图片加文字和图片的水印
/// <summary> /// WaterMark 的摘要说明 /// </summary> /// 图片加水印 /// <param name="strC ...
- Android给图片加文字和图片水印
我们在做项目的时候有时候需要给图片添加水印,水寒今天就遇到了这样的问题,所以搞了一个工具类,贴出来大家直接调用就行. /** * 图片工具类 * @author 水寒 * 欢迎访问水寒的个人博客:ht ...
- 安卓使用TextView实现图片加文字说明
背景:通讯录列表,每个单元格显示头像+名字,且头像显示圆形 方案一:ImageView + TextView 方案二:只用TextView + drawableLeft 属性 <TextView ...
- PHP图片加文字水印和图片水印方法(鉴于李老师博客因没加水印被盗,特搜集的办法。希望能有用!)
$dst_path = 'dst.jpg'; //创建图片的实例 $dst = imagecreatefromstring(file_get_contents($dst_path)); //打上文字 ...
- PHP给图片加文字(水印)
准备工作: 代码: <?php header("Content-type: image/jpeg"); //浏览器输出,如不需要可去掉此行 $im = @imagecreat ...
随机推荐
- gcc对open(2)支持重载吗
在Linux中,如果man -s2 open, 我们看到两种不同的函数原型声明: $ man -s2 open NAME open, creat - open and possibly create ...
- No result defined for action and result input
今天在编程的时候,我遇到了No result defined for action and result input的错误,这个错误想必大家都有遇到过吧,我今天发了很长时间弄这个错误,我以为我的Act ...
- Python制作回合制手游外挂简单教程(下)
引入: 接着上篇的博文,今天我们讲如何实现助人为乐 前期准备: 如何获取图片中指定文字的坐标? 我的思路是截取一个小区域,再根据小区域左上角的坐标获取中央坐标 例如: 获取坐上角的x和y坐标,测量x到 ...
- java调用c/c++代码简单实现以及遇见的坑
以下内容均来自互联网,感谢你们的分享,我只是使用的时候看这方便,可以称呼我“搬运工” 如有不合适的地方请与我联系,我会及时改正 首先你可能会遇见以下错误 第一个错误是你在vs编译器没有选择使用rele ...
- 面向对象(基础oop)之继承总结
大家好,我叫李京阳,,很高兴认识大家,之所以我想开一个自己的博客,就是来把自己所了解的知识点通过自己的话写一下,希望被博客园的朋友们点评和一起讨论一下,也希望从博客园中多认识一些软件开发人员!现在我开 ...
- kinect 深度图像去噪算法
算法设计思路 (1)读取16位深度图像到待处理图像帧组: (2)ROI区域计算 由于kinect 彩色摄像头和红外深度摄像头是存在视角偏差的,经过视角对齐后,得到的深度图像是有黑边的.此处通过取帧组第 ...
- 撩课-Java每天5道面试题第14天
101.请解释下 ORM? 对象关系映射(Object Relational Mapping)模式 是一种为了解决面向对象与关系数据库 存在的互不匹配的现象的技术. 简单来说, ORM是通过使用描述对 ...
- 03-Tomcat服务器
一.Java分类 JavaSE Java的标准版,一般用来开发桌面应用程序, 但是在开发桌面应用程序上相对VB,Delphi,VC++并没有什么优势. JavaEE 也就是Java Enterpris ...
- 使用xml4j xml与字符串之间转换
jar准备:dom4j-2.1.1.jar jaxen-1.1.6.jar jaxen/jaxen/ Maven依赖写法 <dependency> <groupId>jaxe ...
- 洛谷P4716 【模板】最小树形图(朱刘算法)
题意 题目链接 Sol 朱刘算法?感觉又是一种神仙贪心算法 大概就是每次贪心的用每个点边权最小的入边更新答案,如果不行的话就缩起来找其他的边 不详细说了,丢链接走人.. #include<bit ...