php视频转码带水印代码?

七牛云存储的音频水印怎么加php版本的

此 SDK 适用于 PHP 5.1.0 及其以上版本。基于 七牛云存储官方API 构建。使用此 SDK 构建您的网络应用程序,能让您以非常便捷地方式将数据安全地存储到七牛云存储上。无论您的网络应用是一个网站程序,还是包括从云端(服务端程序)到终端(手持设备应用)的架构的服务或应用,通过七牛云存储及其 SDK,都能让您应用程序的终端用户高速上传和下载,同时也让您的服务端更加轻盈。

SDK源码地址:

应用接入

获取Access Key 和 Secret Key

资源管理接口

1 查看单个文件属性信息

2 复制单个文件

3 移动单个文件

4 删除单个文件

上传下载接口

1 文件上传

1.1 上传流程

1.2 上传策略

2 文件下载

2.1 公有资源下载

2.2 私有资源下载

数据处理接口

1 图像

1.1 查看图像属性

1.2 查看图片EXIF信息

1.3 生成图片预览

贡献代码

许可证

应用接入

1. 获取Access Key 和 Secret Key

要接入七牛云存储,您需要拥有一对有效的 Access Key 和 Secret Key 用来进行签名认证。可以通过如下步骤获得:

开通七牛开发者帐号

登录七牛开发者自助平台,查看 Access Key 和 Secret Key 。

资源管理接口

1.查看单个文件属性信息

示例代码如下:

require_once("qiniu/rs.php");

$bucket = "phpsdk";

$key = "pic.jpg";

$accessKey = 'YOUR_APP_ACCESS_KEY';

$secretKey = 'YOUR_APP_SECRET_KEY';

Qiniu_SetKeys($accessKey, $secretKey);

$client = new Qiniu_MacHttpClient(null);

list($ret, $err) = Qiniu_RS_Stat($client, $bucket, $key);

echo "Qiniu_RS_Stat result: \n";

if ($err !== null) {

var_dump($err);

} else {

var_dump($ret);

}

2. 复制单个文件

示例代码如下:

require_once("qiniu/rs.php");

$bucket = "phpsdk";

$key = "pic.jpg";

$key1 = "file_name1";

$accessKey = 'YOUR_APP_ACCESS_KEY';

$secretKey = 'YOUR_APP_SECRET_KEY';

Qiniu_SetKeys($accessKey, $secretKey);

$client = new Qiniu_MacHttpClient(null);

$err = Qiniu_RS_Copy($client, $bucket, $key, $bucket, $key1);

echo "==== Qiniu_RS_Copy result: \n";

if ($err !== null) {

var_dump($err);

} else {

echo "Success!";

}

3. 移动单个文件

示例代码如下:

require_once("qiniu/rs.php");

$bucket = "phpsdk";

$key = "pic.jpg";

$key1 = "file_name1";

$accessKey = 'YOUR_APP_ACCESS_KEY';

$secretKey = 'YOUR_APP_SECRET_KEY';

Qiniu_SetKeys($accessKey, $secretKey);

$client = new Qiniu_MacHttpClient(null);

$err = Qiniu_RS_Move($client, $bucket, $key, $bucket, $key1);

echo "==== Qiniu_RS_Move result: \n";

if ($err !== null) {

var_dump($err);

} else {

echo "Success!";

}

4. 删除单个文件

示例代码如下:

require_once("qiniu/rs.php");

$bucket = "phpsdk";

$key1 = "file_name1";

$accessKey = 'YOUR_APP_ACCESS_KEY';

$secretKey = 'YOUR_APP_SECRET_KEY';

Qiniu_SetKeys($accessKey, $secretKey);

$client = new Qiniu_MacHttpClient(null);

$err = Qiniu_RS_Delete($client, $bucket, $key1);

echo "==== Qiniu_RS_Delete result: \n";

if ($err !== null) {

var_dump($err);

} else {

echo "Success!";

}

上传下载接口

###1. 文件上传

为了尽可能地改善终端用户的上传体验,七牛云存储首创了客户端直传功能。一般云存储的上传流程是:

客户端(终端用户) = 业务服务器 = 云存储服务

这样多了一次上传的流程,和本地存储相比,会相对慢一些。但七牛引入了客户端直传,将整个上传过程调整为:

客户端(终端用户) = 七牛 = 业务服务器

客户端(终端用户)直接上传到七牛的服务器,通过DNS智能解析,七牛会选择到离终端用户最近的ISP服务商节点,速度会比本地存储快很多。文件上传成功以后,七牛的服务器使用回调功能,只需要将非常少的数据(比如Key)传给应用服务器,应用服务器进行保存即可。

1.1上传流程

在七牛云存储中,整个上传流程大体分为这样几步:

业务服务器颁发 uptoken(上传授权凭证)给客户端(终端用户)

客户端凭借 uptoken 上传文件到七牛

在七牛获得完整数据后,发起一个 HTTP 请求回调到业务服务器

业务服务器保存相关信息,并返回一些信息给七牛

七牛原封不动地将这些信息转发给客户端(终端用户)

需要注意的是,回调到业务服务器的过程是可选的,它取决于业务服务器颁发的 uptoken。如果没有回调,七牛会返回一些标准的信息(比如文件的 hash)给客户端。如果上传发生在业务服务器,以上流程可以自然简化为:

业务服务器生成 uptoken(不设置回调,自己回调到自己这里没有意义)

凭借 uptoken 上传文件到七牛

善后工作,比如保存相关的一些信息

服务端生成 uptoken 代码如下:

require_once("qiniu/rs.php");

$bucket = 'phpsdk';

$accessKey = 'YOUR_APP_ACCESS_KEY';

$secretKey = 'YOUR_APP_SECRET_KEY';

Qiniu_SetKeys($accessKey, $secretKey);

$putPolicy = new Qiniu_RS_PutPolicy($bucket);

$upToken = $putPolicy-Token(null);

上传文件到七牛(通常是客户端完成,但也可以发生在服务端):

上传字符串

require_once("qiniu/io.php");

require_once("qiniu/rs.php");

$bucket = "phpsdk";

$key1 = "file_name1";

$accessKey = 'YOUR_APP_ACCESS_KEY';

$secretKey = 'YOUR_APP_SECRET_KEY';

Qiniu_SetKeys($accessKey, $secretKey);

$putPolicy = new Qiniu_RS_PutPolicy($bucket);

$upToken = $putPolicy-Token(null);

list($ret, $err) = Qiniu_Put($upToken, $key1, "Qiniu Storage!", null);

echo "==== Qiniu_Put result: \n";

if ($err !== null) {

var_dump($err);

} else {

var_dump($ret);

}

上传本地文件

require_once("qiniu/io.php");

require_once("qiniu/rs.php");

$bucket = "phpsdk";

$key1 = "file_name1";

$accessKey = 'YOUR_APP_ACCESS_KEY';

$secretKey = 'YOUR_APP_SECRET_KEY';

Qiniu_SetKeys($accessKey, $secretKey);

$putPolicy = new Qiniu_RS_PutPolicy($bucket);

$upToken = $putPolicy-Token(null);

$putExtra = new Qiniu_PutExtra();

$putExtra-Crc32 = 1;

list($ret, $err) = Qiniu_PutFile($upToken, $key1, __file__, $putExtra);

echo "==== Qiniu_PutFile result: \n";

if ($err !== null) {

var_dump($err);

} else {

var_dump($ret);

}

1.2 上传策略

uptoken 实际上是用 AccessKey/SecretKey 进行数字签名的上传策略(Qiniu_RS_PutPolicy),它控制则整个上传流程的行为。让我们快速过一遍你都能够决策啥:

class Qiniu_RS_PutPolicy

{

public $Scope; // 必选项。可以是 bucketName 或者 bucketName:key

public $CallbackUrl; // 可选

public $CallbackBody; // 可选

public $ReturnUrl; // 可选, 更贴切的名字是 redirectUrl。

public $ReturnBody; // 可选

public $AsyncOps; // 可选

public $EndUser; // 可选

public $Expires; // 可选。默认是 3600 秒

}

scope 限定客户端的权限。如果 scope 是 bucket,则客户端只能新增文件到指定的 bucket,不能修改文件。如果 scope 为 bucket:key,则客户端可以修改指定的文件。

callbackUrl 设定业务服务器的回调地址,这样业务服务器才能感知到上传行为的发生。

callbackBody 设定业务服务器的回调信息。文件上传成功后,七牛向业务服务器的callbackUrl发送的POST请求携带的数据。支持 魔法变量 和 自定义变量。

returnUrl 设置用于浏览器端文件上传成功后,浏览器执行301跳转的URL,一般为 HTML Form 上传时使用。文件上传成功后浏览器会自动跳转到 returnUrl?upload_ret=returnBody。

returnBody 可调整返回给客户端的数据包,支持 魔法变量 和 自定义变量。returnBody 只在没有 callbackUrl 时有效(否则直接返回 callbackUrl 返回的结果)。不同情形下默认返回的 returnBody 并不相同。在一般情况下返回的是文件内容的 hash,也就是下载该文件时的 etag;但指定 returnUrl 时默认的 returnBody 会带上更多的信息。

asyncOps 可指定上传完成后,需要自动执行哪些数据处理。这是因为有些数据处理操作(比如音视频转码)比较慢,如果不进行预转可能第一次访问的时候效果不理想,预转可以很大程度改善这一点。

关于上传策略更完整的说明,请参考 uptoken。

2. 文件下载

七牛云存储上的资源下载分为 公有资源下载 和 私有资源下载 。

私有(private)是 Bucket(空间)的一个属性,一个私有 Bucket 中的资源为私有资源,私有资源不可匿名下载。

新创建的空间(Bucket)缺省为私有,也可以将某个 Bucket 设为公有,公有 Bucket 中的资源为公有资源,公有资源可以匿名下载。

2.1 公有资源下载

如果在给bucket绑定了域名的话,可以通过以下地址访问。

[GET] ;domain/key

示例代码:

$key = 'pic.jpg';

$domain = 'phpsdk.qiniudn.com';

//$baseUrl 就是您要访问资源的地址

$baseUrl = Qiniu_RS_MakeBaseUrl($domain, $key);

其中可以到七牛云存储开发者自助网站绑定, 域名可以使用自己一级域名的或者是由七牛提供的二级域名(bucket.qiniudn.com)。注意,尖括号不是必需,代表替换项。

2.2 私有资源下载

私有资源必须通过临时下载授权凭证(downloadToken)下载,如下:

[GET] ;domain/key?e=deadlinetoken=downloadToken

注意,尖括号不是必需,代表替换项。

私有下载链接可以使用 SDK 提供的如下方法生成:

require_once("qiniu/rs.php");

$key = 'pic.jpg';

$domain = 'phpsdk.qiniudn.com';

$accessKey = 'YOUR_APP_ACCESS_KEY';

$secretKey = 'YOUR_APP_SECRET_KEY';

Qiniu_SetKeys($accessKey, $secretKey);

$baseUrl = Qiniu_RS_MakeBaseUrl($domain, $key);

$getPolicy = new Qiniu_RS_GetPolicy();

$privateUrl = $getPolicy-MakeRequest($baseUrl, null);

echo "==== getPolicy result: \n";

echo $privateUrl . "\n";

数据处理接口

七牛支持在云端对图像, 视频, 音频等富媒体进行个性化处理

1. 图像

1.1 查看图像属性

require_once("qiniu/rs.php");

require_once("qiniu/fop.php");

$key = 'pic.jpg';

$domain = 'phpsdk.qiniudn.com';

$accessKey = 'YOUR_APP_ACCESS_KEY';

$secretKey = 'YOUR_APP_SECRET_KEY';

Qiniu_SetKeys($accessKey, $secretKey);

//生成baseUrl

$baseUrl = Qiniu_RS_MakeBaseUrl($domain, $key);

//生成fopUrl

$imgInfo = new Qiniu_ImageInfo;

$imgInfoUrl = $imgInfo-MakeRequest($baseUrl);

//对fopUrl 进行签名,生成privateUrl。 公有bucket 此步可以省去。

$getPolicy = new Qiniu_RS_GetPolicy();

$imgInfoPrivateUrl = $getPolicy-MakeRequest($imgInfoUrl, null);

echo "==== imageInfo privateUrl: \n";

echo $imgInfoPrivateUrl . "\n";

将$imgInfoPrivateUrl粘贴到浏览器地址栏中就可以查看该图像的信息了。

1.2 查看图片EXIF信息

require_once("qiniu/rs.php");

require_once("qiniu/fop.php");

$key = 'pic.jpg';

$domain = 'phpsdk.qiniudn.com';

$accessKey = 'YOUR_APP_ACCESS_KEY';

$secretKey = 'YOUR_APP_SECRET_KEY';

Qiniu_SetKeys($accessKey, $secretKey);

//生成baseUrl

$baseUrl = Qiniu_RS_MakeBaseUrl($domain, $key);

//生成fopUrl

$imgExif = new Qiniu_Exif;

$imgExifUrl = $imgExif-MakeRequest($baseUrl);

//对fopUrl 进行签名,生成privateUrl。 公有bucket 此步可以省去。

$getPolicy = new Qiniu_RS_GetPolicy();

$imgExifPrivateUrl = $getPolicy-MakeRequest($imgExifUrl, null);

echo "==== imageView privateUrl: \n";

echo $imgExifPrivateUrl . "\n";

1.3 生成图片预览

require_once("qiniu/rs.php");

require_once("qiniu/fop.php");

$key = 'pic.jpg';

$domain = 'phpsdk.qiniudn.com';

$accessKey = 'YOUR_APP_ACCESS_KEY';

$secretKey = 'YOUR_APP_SECRET_KEY';

Qiniu_SetKeys($accessKey, $secretKey);

//生成baseUrl

$baseUrl = Qiniu_RS_MakeBaseUrl($domain, $key);

//生成fopUrl

$imgView = new Qiniu_ImageView;

$imgView-Mode = 1;

$imgView-Width = 60;

$imgView-Height = 120;

$imgViewUrl = $imgView-MakeRequest($baseUrl);

//对fopUrl 进行签名,生成privateUrl。 公有bucket 此步可以省去。

$getPolicy = new Qiniu_RS_GetPolicy();

$imgViewPrivateUrl = $getPolicy-MakeRequest($imgViewUrl, null);

echo "==== imageView privateUrl: \n";

echo $imgViewPrivateUrl . "\n";

贡献代码

Fork

创建您的特性分支 (git checkout -b my-new-feature)

提交您的改动 (git commit -am 'Added some feature')

将您的修改记录提交到远程 git 仓库 (git push origin my-new-feature)

然后到 github 网站的该 git 远程仓库的 my-new-feature 分支下发起 Pull Request

PHP给图片添加文字水印

请确认C:\WINDOWS\Fonts\simkai.ttf';是否支持中文

或不要转换

$str = iconv('GB2312','UTF-8',$str);

直接

$str=$str;

php图片水印代码问题拜托了各位 谢谢

不显示的话就是你没输出来,请参考以下代码重新检查一遍: ------------------------------华丽分割线------------------------------------- ? /* * 功能:PHP图片水印 (水印支持图片或文字) * 参数: * $groundImage 背景图片,即需要加水印的图片,暂只支持GIF,JPG,PNG格式; * $waterPos 水印位置,有10种状态,0为随机位置; * 1为顶端居左,2为顶端居中,3为顶端居右; * 4为中部居左,5为中部居中,6为中部居右; * 7为底端居左,8为底端居中,9为底端居右; * $waterImage 图片水印,即作为水印的图片,暂只支持GIF,JPG,PNG格式; * $waterText 文字水印,即把文字作为为水印,支持ASCII码,不支持中文; * $fontSize 文字大小,值为1、2、3、4或5,默认为5; * $textColor 文字颜色,值为十六进制颜色值,默认为#CCCCCC(白灰色); * $fontfile ttf字体文件,即用来设置文字水印的字体。使用windows的用户在系统盘的目录中 * 搜索*.ttf可以得到系统中安装的字体文件,将所要的文件拷到网站合适的目录中, * 默认是当前目录下arial.ttf。 * $xOffset 水平偏移量,即在默认水印坐标值基础上加上这个值,默认为0,如果你想留给水印留 * 出水平方向上的边距,可以设置这个值,如:2 则表示在默认的基础上向右移2个单位,-2 表示向左移两单位 * $yOffset 垂直偏移量,即在默认水印坐标值基础上加上这个值,默认为0,如果你想留给水印留 * 出垂直方向上的边距,可以设置这个值,如:2 则表示在默认的基础上向下移2个单位,-2 表示向上移两单位 * 返回值: * 0 水印成功 * 1 水印图片格式目前不支持 * 2 要水印的背景图片不存在 * 3 需要加水印的图片的长度或宽度比水印图片或文字区域还小,无法生成水印 * 4 字体文件不存在 * 5 水印文字颜色格式不正确 * 6 水印背景图片格式目前不支持 * 修改记录: * * 注意:Support GD 2.0,Support FreeType、GIF Read、GIF Create、JPG 、PNG * $waterImage 和 $waterText 最好不要同时使用,选其中之一即可,优先使用 $waterImage。 * 当$waterImage有效时,参数$waterString、$stringFont、$stringColor均不生效。 * 加水印后的图片的文件名和 $groundImage 一样。 * 作者:高西林 * 日期:2007-4-28 * 说明:本程序根据longware的程序改写而成。 */ function imageWaterMark($groundImage,$waterPos=0,$waterImage="",$waterText="",$fontSize=12,$textColor="#CCCCCC", $fontfile='./arial.ttf',$xOffset=0,$yOffset=0) { $isWaterImage = FALSE; //读取水印文件 if(!empty($waterImage) file_exists($waterImage)) { $isWaterImage = TRUE; $water_info = getimagesize($waterImage); $water_w = $water_info[0];//取得水印图片的宽 $water_h = $water_info[1];//取得水印图片的高 switch($water_info[2]) { //取得水印图片的格式 case 1:$water_im = imagecreatefromgif($waterImage);break; case 2:$water_im = imagecreatefromjpeg($waterImage);break; case 3:$water_im = imagecreatefrompng($waterImage);break; default:return 1; } } //读取背景图片 if(!empty($groundImage) file_exists($groundImage)) { $ground_info = getimagesize($groundImage); $ground_w = $ground_info[0];//取得背景图片的宽 $ground_h = $ground_info[1];//取得背景图片的高 switch($ground_info[2]) { //取得背景图片的格式 case 1:$ground_im = imagecreatefromgif($groundImage);break; case 2:$ground_im = imagecreatefromjpeg($groundImage);break; case 3:$ground_im = imagecreatefrompng($groundImage);break; default:return 1; } } else { return 2; } //水印位置 if($isWaterImage) { //图片水印 $w = $water_w; $h = $water_h; $label = "图片的"; } else { //文字水印 if(!file_exists($fontfile))return 4; $temp = imagettfbbox($fontSize,0,$fontfile,$waterText);//取得使用 TrueType 字体的文本的范围 $w = $temp[2] - $temp[6]; $h = $temp[3] - $temp[7]; unset($temp); } if( ($ground_w $w) || ($ground_h $h) ) { return 3; } switch($waterPos) { case 0://随机 $posX = rand(0,($ground_w - $w)); $posY = rand(0,($ground_h - $h)); break; case 1://1为顶端居左 $posX = 0; $posY = 0; break; case 2://2为顶端居中 $posX = ($ground_w - $w) / 2; $posY = 0; break; case 3://3为顶端居右 $posX = $ground_w - $w; $posY = 0; break; case 4://4为中部居左 $posX = 0; $posY = ($ground_h - $h) / 2; break; case 5://5为中部居中 $posX = ($ground_w - $w) / 2; $posY = ($ground_h - $h) / 2; break; case 6://6为中部居右 $posX = $ground_w - $w; $posY = ($ground_h - $h) / 2; break; case 7://7为底端居左 $posX = 0; $posY = $ground_h - $h; break; case 8://8为底端居中 $posX = ($ground_w - $w) / 2; $posY = $ground_h - $h; break; case 9://9为底端居右 $posX = $ground_w - $w; $posY = $ground_h - $h; break; default://随机 $posX = rand(0,($ground_w - $w)); $posY = rand(0,($ground_h - $h)); break; } //设定图像的混色模式 imagealphablending($ground_im, true); if($isWaterImage) { //图片水印 imagecopy($ground_im, $water_im, $posX + $xOffset, $posY + $yOffset, 0, 0, $water_w,$water_h);//拷贝水印到目标文件 } else {//文字水印 if( !empty($textColor) (strlen($textColor)==7) ) { $R = hexdec(substr($textColor,1,2)); $G = hexdec(substr($textColor,3,2)); $B = hexdec(substr($textColor,5)); } else { return 5; } imagettftext ( $ground_im, $fontSize, 0, $posX + $xOffset, $posY + $h + $yOffset, imagecolorallocate($ground_im, $R, $G, $B), $fontfile, $waterText); } //生成水印后的图片 @unlink($groundImage); switch($ground_info[2]) {//取得背景图片的格式 case 1:imagegif($ground_im,$groundImage);break; case 2:imagejpeg($ground_im,$groundImage);break; case 3:imagepng($ground_im,$groundImage);break; default: return 6; } //释放内存 if(isset($water_info)) unset($water_info); if(isset($water_im)) imagedestroy($water_im); unset($ground_info); imagedestroy($ground_im); // return 0; } ? ?php ////////////////////// if(isset($_POST['submit'])) { if(isset($_FILES) !empty($_FILES['userfile']) $_FILES['userfile']['size']0) { $uploadfile = "./".time()."_".$_FILES['userfile']['name']; if (copy($_FILES['userfile']['tmp_name'], $uploadfile)) { if($_POST['watertype'] == 0) { $msg = "returnvalue=".imageWaterMark($uploadfile,$_POST['waterpos'],"",$_POST['watercontent'],$_POST['fontsize'],$_POST['fontcolor'],$_POST['fontfile'],$_POST['xoffset'],$_POST['yoffset']); } else { $msg = "returnvalue=".imageWaterMark($uploadfile,$_POST['waterpos'],$_POST['watercontent']); } echo "img src=\"".$uploadfile."\" border=\"0\""; } else { $msg = "Fail!"; } } } ? html head meta http-equiv=content-type content="text/html; charset=utf-8" title水印函数测试/title /head body form enctype="multipart/form-data" method="POST" table tr tdinput name="watertype" type="radio" value=0 checked文字水印  input type="radio" name="watertype" value=1水印图片/td /tr tr tdinput name="watercontent" value="blog.csdn.net/alin0725"水印文字内容或水印图片文件名/td /tr tr tdinput name="fontcolor" value="#CCCCCC"文字水印颜色/td /tr tr tdinput name="fontsize" value="10"文字字体大小/td /tr tr tdinput name="fontfile" value="./arial.ttf"文字字体文件ttf格式/td /tr tr td水印位置input name="waterpos" value=0 0为随机,其他位置值如下: table tr td1/td td2/td td3/td /tr tr td4/td td5/td td6/td /tr tr td7/td td8/td td9/td /tr /table /td /tr tr tdx方向上的偏移量input name="xoffset" value=0    y方向上的偏移量input name="yoffset" value=0 /td tr tr td背景图片: input name="userfile" type="file" /td /tr tr tdinput type="submit" name="submit" value="提交"/td /tr tr td消息:?php echo $msg; ?/td /tr /table /form /body /html

谁有打水印代码???PHP

非常好用的加水印程序

//watermark(源图,生成文件,生成位置,水印文件,水印文本,背景色)

function watermark($source, $target = '', $w_pos = 0, $w_img = '', $w_text = '', $w_font = 12, $w_color = '#cccccc')

{

if(!$this-watermark_enable || !$this-check($source)) return false;

if(!$target) $target = $source;

if ($w_img == '' $w_text == '')

$w_img = $this-w_img;

$source_info = getimagesize($source);

$source_w = $source_info[0]; //获取宽

$source_h = $source_info[1]; //获取高

if($source_w $this-w_minwidth || $source_h $this-w_minheight) return false; //宽和高达不到要求直接返回

switch($source_info[2]) //新建图片

{

case 1 :

$source_img = imagecreatefromgif($source);

break;

case 2 :

$source_img = imagecreatefromjpeg($source);

break;

case 3 :

$source_img = imagecreatefrompng($source);

break;

default :

return false;

}

if(!empty($w_img) file_exists($w_img)) //水印文件

{

$ifwaterimage = 1; //是否水印图

$water_info = getimagesize($w_img); //水印信息

$width = $water_info[0];

$height = $water_info[1];

switch($water_info[2])

{

case 1 :

$water_img = imagecreatefromgif($w_img);

break;

case 2 :

$water_img = imagecreatefromjpeg($w_img);

break;

case 3 :

$water_img = imagecreatefrompng($w_img);

break;

default :

return;

}

}

else

{

$ifwaterimage = 0;

//imagettfbbox 本函数计算并返回一个包围着 TrueType 文本范围的虚拟方框的像素大小。

//imagettfbbox ( 字体大小, 字体角度, 字体文件,文件 )

$temp = imagettfbbox(ceil($w_font*1.2), 0, $this-fontfile, $w_text);//取得使用 truetype 字体的文本的范围

$width = $temp[4] - $temp[6]; //右上角 X 位置 - 左上角 X 位置

$height = $temp[3] - $temp[5]; //右下角 Y 位置- 右上角 Y 位置

unset($temp);

}

switch($w_pos)

{

case 0: //随机位置

$wx = rand(0,($source_w - $width));

$wy = rand(0,($source_h - $height));

break;

case 1: //左上角

$wx = 5;

$wy = 5;

break;

case 2: //上面中间位置

$wx = ($source_w - $width) / 2;

$wy = 0;

break;

case 3: //右上角

$wx = $source_w - $width;

$wy = 0;

break;

case 4: //左面中间位置

$wx = 0;

$wy = ($source_h - $height) / 2;

break;

case 5: //中间位置

$wx = ($source_w - $width) / 2;

$wy = ($source_h - $height) / 2;

break;

case 6: //底部中间位置

$wx = ($source_w - $width) / 2;

$wy = $source_h - $height;

break;

case 7: //左下角

$wx = 0;

$wy = $source_h - $height;

break;

case 8: //右面中间位置

$wx = $source_w - $width;

$wy = ($source_h - $height) /2;

break;

case 9: //右下角

$wx = $source_w - $width;

$wy = $source_h - $height ;

break;

default: //随机

$wx = rand(0,($source_w - $width));

$wy = rand(0,($source_h - $height));

break;

}

if($ifwaterimage) //如果有水印图

{

//imagecopymerge 拷贝并合并图像的一部分

//参数(源图,水印图,拷贝到源图x位置,拷贝到源图y位置,从水印图x位置,从水印图y位置,高,宽,透明度)

imagecopymerge($source_img, $water_img, $wx, $wy, 0, 0, $width, $height, $this-w_pct);

}

else

{

if(!empty($w_color) (strlen($w_color)==7))

{

$r = hexdec(substr($w_color,1,2)); //获取红色

$g = hexdec(substr($w_color,3,2)); //获取绿色

$b = hexdec(substr($w_color,5)); //获取蓝色

}

else

{

return;

}

//imagecolorallocate 基于调色板的图像填充背景色

//imagestring 水平地画一行字符串

//imagestring(源图,字体大小,位置X,位置Y,文字,颜色)

//参数($image, float $size, float $angle, int $x, int $y, int $color, string $fontfile, string $text)

imagettftext($source_img,$w_font,0,$wx,$wy,imagecolorallocate($source_img,$r,$g,$b),$this-fontfile,$w_text);

//imagestring($source_img,$w_font,$wx,$wy,$w_text,imagecolorallocate($source_img,$r,$g,$b));

}

//输出到文件或者浏览器

switch($source_info[2])

{

case 1 :

imagegif($source_img, $target); //以 GIF 格式将图像输出到浏览器或文件

break;

case 2 :

imagejpeg($source_img, $target, $this-w_quality); //以 JPEG 格式将图像输出到浏览器或文件

break;

case 3 :

imagepng($source_img, $target); //以 PNG 格式将图像输出到浏览器或文件

break;

default :

return;

}

if(isset($water_info))

{

unset($water_info); //销毁

}

if(isset($water_img))

{

imagedestroy($water_img); //销毁

}

unset($source_info);

imagedestroy($source_img);

return true;

}

//gd库必须存在,后缀为jpg|jpeg|gif|png,文件存在,imagecreatefromjpeg或者imagecreatefromgif存在

function check($image)

{

return extension_loaded('gd')

preg_match("/\.(jpg|jpeg|gif|png)/i", $image, $m)

file_exists($image)

function_exists('imagecreatefrom'.($m[1] == 'jpg' ? 'jpeg' : $m[1]));

}

}

php批量水印添加源码

这个要用到文件列遍函数

$dir="./images/*.jpg"; //以jpg图片为例

$image_files=glob($dir); //将目录中指定类型文件url读入$image_files数组

然后用循环语句进行添加水印

for($i=0;$icount($image_files);$i++)

{

//调用图片文件

$this_image=$image_files[$i];

//添加水印代码

}

php视频转码带水印代码?  第1张

php如何实现自动加水印

加水印逻辑有两种

一种是上传直接加水印

另一种是利用伪静态将图片访问重定向到处理程序,临时加水印缓存并输出

php处理图片加水印可以使用gd库中的相关函数

以下为临时手打代码,可以按此思路优化,有问题可以联系本人

//此处需根据上传的图片格式使用对应函数实例化图片

$img=imagecreatefromjpg($imgurl);

//根据水印图片路径实例化水印

$waterImg=imagecreatefrompng($waterpath);

//获取原图及水印图片尺寸,用以计算是否需要缩放及放置位置

list($width, $height, $type, $attr) = getimagesize($imgurl);

list($waterw, $waterh, $type, $attr) = getimagesize($waterpath);

$scale=1;

$waterReleaseW=$waterw;

$waterReleaseH=$waterh;

if($waterReleaseW$width*.5){

    $scale=$width*.5/$waterw;

    $waterReleaseW = $width*.5;

    $waterReleaseH = $waterh*$scale;

}

if($waterReleaseH$height*.5){

    $scale *= $height*.5/$waterh;

    $waterReleaseH = $height*.5;

    $waterReleaseW = $waterw*$scale;

}

//将水印图片拷贝到原图指定位置(此示例为右下角)

imagecopyresized($img,$waterImg,

    $width-$waterReleaseW-10,$height-$waterReleaseH-10,

    0,0,

    $width-10,$height-10,

    $waterw,$waterh);

//销毁水印图片实例

imagedestroy($waterImg);

//水印后图片保存

imagejpeg($img,$newpath);

以上内容为新媒号(sinv.com.cn)为大家提供!新媒号,坚持更新大家所需的互联网后端知识。希望您喜欢!

版权申明:新媒号所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请发送邮件至 k2#88.com(替换@) 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023-09-23 13:29
下一篇 2023-09-23 13:29

相关推荐

发表回复

登录后才能评论