PHP经典的给图片加水印程序

 更新时间:2016年11月25日 16:59  点击:1592

<?php
/*************************************************************
参数说明:
$max_file_size : 上传文件大小限制, 单位BYTE
$destination_folder : 上传文件路径
$watermark : 是否附加水印(1为加水印,其他为不加水印);
使用说明:
1. 将PHP.INI文件里面的"extension=php_gd2.dll"一行前面的;号去掉,因为我们要用到GD库;
2. 将extension_dir =改为你的php_gd2.dll所在目录;
****************************************************************/
//上传文件类型列表
$uptypes=array(
'image/jpg',
'image/jpeg',
'image/png',
'image/pjpeg',
'image/gif',
'image/bmp',
'image/x-png'
);
$max_file_size=2000000; //上传文件大小限制, 单位BYTE
$destination_folder="uploadimg/"; //上传文件路径
$watermark=1; //是否附加水印(1为加水印,其他为不加水印);
$watertype=1; //水印类型(1为文字,2为图片)
$waterposition=1; //水印位置(1为左下角,2为右下角,3为左上角,4为右上角,5为居中);
$waterstring="http://www.fcxx.net/"; //水印字符串
$waterimg="xplore.gif"; //水印图片
$imgpreview=1; //是否生成预览图(1为生成,其他为不生成);
$imgpreviewsize=1/2; //缩略图比例
?>
<html>
<head>
<title>ZwelL图片上传程序</title>
<style type="text/css">
<!--
body
{
font-size: 9pt;
}
input
{
background-color: #66CCFF;
border: 1px inset #CCCCCC;
}
-->
</style>
</head>
<body>
<form enctype="multipart/form-data" method="post" name="upform">
上传文件:
<input name="upfile" type="file">
<input type="submit" value="上传"><br>
答应上传的文件类型为:<?=implode(', ',$uptypes)?>
</form>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (!is_uploaded_file($_FILES["upfile"][tmp_name]))
//是否存在文件

一、软件预备:
php(5.1.2):http://www.php.net

mysql(5.0.19):http://www.mysql.com

zend optimizer(2.6.2):http://www.zend.com

phpmyadmin(2.8.0.2):http://www.phpmyadmin.net

假设 c: 为你现在所使用操作系统的系统盘,假如你目前操作系统不是安装在 c: ,请自行修改。

二、安装 php :

(1) 下载后得到 php-5.1.2-win32.zip ,解压至c:php(这个路径可以随意,不过下面要是用到这个路径,请相应修改);

(2)再将 c:phplibmysql.dll 和 c:inetpubphpextphp_mysql.dll 复制到 c:windowssystem32 下;

(3)将c:phpphp.ini-dist 复制到c:windows ( windows 2000 下为 c:winnt)并将改名为php.ini,然后用记事本打开,利用记事本的查找功能搜索:

extension_dir = "c:phpext"
将其路径指到你的 php 目录下的 extensions 目录,比如:extension_dir = "c:inetpubphpext" ;

搜索;windows extensions并仅打开需要的模块以节省内存(去掉每个模块前的;号即可):

extension=php_gd2.dll
gd库支持,假如不打开该模块则discuz!论坛图片水印不能使用。

extension=php_mbstring.dll
为了支持phpmyadmin,打开mbstring。

extension=php_mysql.dll
不用说了吧,支持mysql。

(4)配置 iis 使其支持 php

首先必须确定系统中已经正确安装 iis ,假如没有安装,需要先安装 iis。

php 与iis整合时支持 cgi 和 isapi 两种模式,推荐使用 isapi 模式。这里只解介绍 isapi 模式安装方法:isapi 模式安装步骤:

在“控制面板”的“治理工具”中选择“internet 服务治理器”,打开 iis 后停止服务,然后在左侧“你需要支持php的web站点上单击右键选择“属性”,在打开的“ web 站点属性”窗口的“isapi 筛选器”标签里找到并点击“添加”按钮,在弹出的“筛选器属性”窗口中的“筛选器名称”栏中输入:php ,再将可执行文件指向 php5isapi.dll 所在路径,如:c:phpphp5isapi.dll 。

打开“web 站点属性”窗口的“主目录”标签,找到并点击“配置”按钮,在弹出的“应用程序配置”窗口中找到并点击“添加”按钮,在弹出的窗口中新增一个扩展名映射,扩展名为 .php ,单击“浏览”将可执行文件指向 php5isapi.dll 所在路径,如:c:phpphp5isapi.dll,然后一路确定即可。

再打开“web 站点属性”窗口的“文档”标签,找到并点击“添加”按钮,向默认的 web 站点启动文档列表中添加 index.php 项。您可以将 index.php 升到最高优先级,这样,访问站点时就会首先自动寻找并打开 index.php 文档。

确定 web 目录的应用程序设置和执行许可中选择为纯脚本,然后关闭 internet 信息服务治理器,在命令提示符中执行如下命令:

net stop w3svc
net stop iisadmin
net start w3svc

然后在“internet 服务治理器”左边的“web服务扩展”中设置isapi 扩展答应,active server pages 答应

打开浏览器,输入:http://localhost/,看到成功页面后,在 iis 根目录下新建一个 phpinfo.php ,内容如下:


<?php
phpinfo();

function is_ip($str) {
if(!strcmp(long2ip(sprintf("%u",ip2long($ip))),$ip)) return 1;
else return 0;
}
或者(老版本用)
function is_ip($str) {
$ip = explode(".", $str);
if (count($ip)<4 || count($ip)>4) return 0;
foreach($ip as $ip_addr) {
if ( !is_numeric($ip_addr) ) return 0;
if ( $ip_addr<0 || $ip_addr>255 ) return 0;
}
return 1;
}
假如简单的判定格式a.b.c.d而不考虑abcd的值的话:
return (preg_match("/^([0-9]{1,3}.){3}[0-9]{1,3}$/is", $str));
不过假如需要真的ip的时候就不好玩了

想象过在网站上动态生成flash动画吗,本文就让你步入php flash的激动时代。



一、需要的软件

swf的支持库:http://reality.sgi.com/grafica/flash/dist.99.linux.tar.Z,这个包里面有文档,你可以用c来使用它。

还有当然是php4了,可以从http://www.php.net得到。



二、安装

1、libswf.a安装

#cp dist.99.linux.tar.Z /usr/local

#tar xvzf dist.99.linux.tar.Z

#cd dist

#make

你会看到例子c程序生成的image.swf和test.swf两个文件,你可以放到浏览器看看结果。假如出来了,你就完成一半了。你还需要做一些事情,在/etc/profile中加入:

SWFBINPATH=/usr/local/dist/bin

export SWFBINPATH

SWFFONTPATH=/usr/local/dist/fonts

export SWFFONTPATH



2、编译php4

编译加入:--with-swf=/usr/local/dist ;

笔者在编译的时候发现找不到swf.h错误,用#cp /usr/local/dist/swf.h /php/src/directory/ext/swf解决问题,安装完后做个如下的脚本(php文档带的例子),请注重当前目录下的swf目录要可写,不然不但apache会出错而且你也会什么都找不到的。



执行完后用浏览器调用test.swf文件,你肯定会很惊奇php的威力,体会一下程序设计和艺术设计的完美感觉吧!在/usr/local/dist/bin中有两个程序,imgtofi用来转化rgb,gif,jpg到libswf.a支持的图形格式,pstoff为把ps字体转化为libswf.a可用的字体,我转化过英文字体,能在程序中使用,但是没转化成功过中文字体。关于swf的php函数说明,请去php.net找最新的manual。

设置数据库
  我们通常在数据库中所使用的文本或整数类型的字段和需要用来保存图片的字段的不同之处就在于两者所需要保存的数据量不同。MySQL数据库使用专门的字段来保存大容量的数据,数据类型为BLOB。
MySQL数据库为BLOB做出的定义如下:BLOB数据类型是一种大型的二进制对象,可以保存可变数量的数据。BLOB具有四种类型,分别是TINYBLOB,BLOB, MEDIUMBLOB 和LONGBLOB,区别在于各自所能够保存的最大数据长度不同。
在介绍了所需要使用的数据类型之后,我们可以使用以下语句创建保存图象的数据表。
  CREATE TABLE Images ( PicNum int NOT NULL AUTO_INCREMENT PRIMARY KEY, Image BLOB );

编写上传脚本
  关于如何实现文件的上传,我们在这里就不再介绍了,感爱好的读者可以参见“网页陶吧”内的相关文章。现在,我们主要来看一下如何接收上传文件并将其存入到MySQL数据库中。具体的脚本代码如下,其中我们假定文件上传域的名称为Picture。

<? If($Picture != "none") { $PSize = filesize($Picture); $mysqlPicture = addslashes(fread(fopen($Picture, "r"), $PSize)); mysql_connect($host,$username,$password) or die("Unable to connect to SQL server"); @mysql_select_db($db) or die("Unable to select database"); mysql_query("INSERT INTO Images (Image) VALUES ($mysqlPicture)") or die("Cant Perform Query"); } else { echo"You did not upload any picture"; } ?>

  这样,我们就可以成功的把图片保存到数据库中。假如在将图片插入MySQL的过程中出现问题,可以检查一下MySQL数据库所答应的最大数据包的大小。假如设置值过小的话,我们会在数据库的错误日志中找到相应的记录。下面,我们简单说明一下上述脚本程序。首先,我们通过“If($Picture != "none")”检查是否有文件被上传。然后,使用addslashes()函数避免出现数据格式错误。最后,连接MySQL,选择数据库并插入图片。

显示图片
  在知道了如何将图? 入数据库之后,我们就需要考虑怎样才能从数据库中取出图片并在HTML页面中显示出来。这个过程要稍微复杂一些,下面我们就来介绍一下实现过程。因为PHP显示图片需要发送相应的标头,所以我们就会面临这样一个问题,那就是一次只能显示一副图片,因为我们无法在发出标头之后再发送其它的标头。

为了有效的解决这一问题,我们编写了两个文件。其中,第一个文件作为HTML页面的模板,定位图片的显示位置。第二个文件则被用来从数据库中实际输出文件流,作为<IMG>标签的SRC属性。

第一个文件的简单形式可以如下:

<HTML> <BODY> <? mysql_connect($host,$username,$password) or die("Unable to connect to SQL server"); @mysql_select_db($db) or die("Unable to select database"); $result=mysql_query("SELECT * FROM Images") or die("Cant Perform Query"); While($row=mysql_fetch_object($result)) { echo "<IMG SRC="Second.php3? PicNum=$row->PicNum">"; } ?> </BODY> </HTML>

  当HTML页面被浏览时,每显示一副图片就会调用一次Second.php3文件。当第二个文件被调用时会传入相应的Picture ID,我们可以借此从数据库中取回对应的图片并显示。

Second.php3文件如下:

<? $result=mysql_query("SELECT * FROM Images WHERE PicNum=$PicNum") or die("Cant perform Query"); $row=mysql_fetch_object($result); Header( "Content-type: image/gif"); echo $row->Image; ?>

  到此,我们就介绍完了使用PHP和MySQL保存和显示图片的全过程。文中所举得都是一些最简单的实例,读者可以根据自己的实际需要加入其它一些功能,使整个程序更加完善。

[!--infotagslink--]

相关文章

  • 使用PHP+JavaScript将HTML页面转换为图片的实例分享

    这篇文章主要介绍了使用PHP+JavaScript将HTML元素转换为图片的实例分享,文后结果的截图只能体现出替换的字体,也不能说将静态页面转为图片可以加快加载,只是这种做法比较interesting XD需要的朋友可以参考下...2016-04-19
  • C#开发Windows窗体应用程序的简单操作步骤

    这篇文章主要介绍了C#开发Windows窗体应用程序的简单操作步骤,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-04-12
  • php抓取网站图片并保存的实现方法

    php如何实现抓取网页图片,相较于手动的粘贴复制,使用小程序要方便快捷多了,喜欢编程的人总会喜欢制作一些简单有用的小软件,最近就参考了网上一个php抓取图片代码,封装了一个php远程抓取图片的类,测试了一下,效果还不错分享...2015-10-30
  • C#从数据库读取图片并保存的两种方法

    这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
  • Photoshop古装美女图片转为工笔画效果制作教程

    今天小编在这里就来给各位Photoshop的这一款软件的使用者们来说说把古装美女图片转为细腻的工笔画效果的制作教程,各位想知道方法的使用者们,那么下面就快来跟着小编一...2016-09-14
  • Python 图片转数组,二进制互转操作

    这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
  • C++调用C#的DLL程序实现方法

    本文通过例子,讲述了C++调用C#的DLL程序的方法,作出了以下总结,下面就让我们一起来学习吧。...2020-06-25
  • 利用JS实现点击按钮后图片自动切换的简单方法

    下面小编就为大家带来一篇利用JS实现点击按钮后图片自动切换的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-10-25
  • 微信小程序 页面传值详解

    这篇文章主要介绍了微信小程序 页面传值详解的相关资料,需要的朋友可以参考下...2017-03-13
  • jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮

    jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮...2013-10-13
  • js实现上传图片及时预览

    这篇文章主要为大家详细介绍了js实现上传图片及时预览的相关资料,具有一定的参考价值,感兴趣的朋友可以参考一下...2016-05-09
  • C#使用Process类调用外部exe程序

    本文通过两个示例讲解了一下Process类调用外部应用程序的基本用法,并简单讲解了StartInfo属性,有需要的朋友可以参考一下。...2020-06-25
  • Photoshop枪战电影海报图片制作教程

    Photoshop的这一款软件小编相信很多的人都已经是使用过了吧,那么今天小编在这里就给大家带来了用Photoshop软件制作枪战电影海报的教程,想知道制作步骤的玩家们,那么下面...2016-09-14
  • 使用GruntJS构建Web程序之构建篇

    大概有如下步骤 新建项目Bejs 新建文件package.json 新建文件Gruntfile.js 命令行执行grunt任务 一、新建项目Bejs源码放在src下,该目录有两个js文件,selector.js和ajax.js。编译后代码放在dest,这个grunt会...2014-06-07
  • 微信小程序二维码生成工具 weapp-qrcode详解

    这篇文章主要介绍了微信小程序 二维码生成工具 weapp-qrcode详解,教大家如何在项目中引入weapp-qrcode.js文件,通过实例代码给大家介绍的非常详细,需要的朋友可以参考下...2021-10-23
  • uniapp微信小程序:key失效的解决方法

    这篇文章主要介绍了uniapp微信小程序:key失效的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-20
  • 将c#编写的程序打包成应用程序的实现步骤分享(安装,卸载) 图文

    时常会写用c#一些程序,但如何将他们和photoshop一样的大型软件打成一个压缩包,以便于发布....2020-06-25
  • python opencv通过4坐标剪裁图片

    图片剪裁是常用的方法,那么如何通过4坐标剪裁图片,本文就详细的来介绍一下,感兴趣的小伙伴们可以参考一下...2021-06-04
  • PHP常用的小程序代码段

    本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24
  • 微信小程序 网络请求(GET请求)详解

    这篇文章主要介绍了微信小程序 网络请求(GET请求)详解的相关资料,需要的朋友可以参考下...2016-11-22