php圖片處理:加水印、縮略圖的實(shí)現(xiàn)(自定義函數(shù):watermark、thumbnail)
更新時(shí)間:2010年12月02日 21:48:31 作者:
圖片處理:加水印、縮略圖的實(shí)現(xiàn)(自定義函數(shù):watermark、thumbnail)代碼有點(diǎn)長(zhǎng),但不復(fù)雜。
廢話不說(shuō)了,貼代碼:
<?php
/************************************
//函數(shù): watermark($bigimg, $smallimg, $coord = 1)
//作用: 添加水印
//參數(shù):
$bigimg 必選。大圖片--要加上水印的圖片
$smallimg 必選。小圖片
$coord 可選。水印在大圖中的位置,
1 左上角; 2 右上角; 3 右下角; 4 左下角; 5 中間
//示例: watermark('datu.png', 'xiaotu.png', 3); //給datu.png打上水印,水印位置在右下角
*************************************/
function watermark($bigimg, $smallimg, $coord = 1){
//載入兩張圖片,并轉(zhuǎn)成php識(shí)別的編碼格式,
//等同于 imagecreate 函數(shù),只不過(guò)這里創(chuàng)建的不是一個(gè)空?qǐng)D片。
$bi = getimagesize($bigimg);
switch($bi[2]){
case 1:
$im1 = imagecreatefromgif($bigimg);break;
case 2;
$im1 = imagecreatefromjpeg($bigimg);break;
case 3;
$im1 = imagecreatefrompng($bigimg);break;
}
$si = getimagesize($smallimg);
switch($si[2]){
case 1:
$im2 = imagecreatefromgif($smallimg);break;
case 2;
$im2 = imagecreatefromjpeg($smallimg);break;
case 3;
$im2 = imagecreatefrompng($smallimg);break;
}
// 創(chuàng)建水印--原理:復(fù)制小圖到大圖上。這里注意坐標(biāo)值的計(jì)算
switch($coord){
case 1:
imagecopy ( $im1, $im2, 0, 0, 0, 0, $si[0], $si[1] ); break;
case 2:
imagecopy ( $im1, $im2, $bi[0]-$si[0], 0, 0, 0, $si[0], $si[1] ); break;
case 3:
imagecopy ( $im1, $im2, $bi[0]-$si[0], $bi[1]-$si[1], 0, 0, $si[0], $si[1] ); break;
case 4:
imagecopy ( $im1, $im2, 0, $bi[1]-$si[1], 0, 0, $si[0], $si[1] ); break;
case 5:
imagecopy ( $im1, $im2, ($bi[0]-$si[0])/2, ($bi[1]-$si[1])/2, 0, 0, $si[0], $si[1] ); break;
}
//根據(jù)后綴名生成不同格式的圖片文件
switch($bi[2]){
case 1:
imagegif($im1);break;
case 2;
imagejpeg($im1);break;
case 3;
imagepng($im1);break;
}
imagedestroy($im1);
}
/************************************************
//函數(shù): thumbnail($srcimg, $multiple)
//作用: 生成一張縮略圖
//參數(shù):
// $srcimg 必選。源圖片文件名
// $multiple 可選??s略倍數(shù),默認(rèn)為2倍,即縮小為原來(lái)的1/2
//注意: 只支持gif、jpg、png的格式圖片。
//示例: thumbnail('我的圖片.jpg', 5);
*************************************************/
function thumbnail($srcimg, $multiple = 2){
//載入圖片并保存其信息到數(shù)組
$srcimg_arr = getimagesize($srcimg);
//計(jì)算縮略倍數(shù)
$thumb_width = $srcimg_arr[0] / $multiple;
$thumb_height = $srcimg_arr[1] / $multiple;
//判斷:要建立什么格式的圖片(轉(zhuǎn)成php識(shí)別的編碼)
switch($srcimg_arr[2]){
case 1:
$im = imagecreatefromgif($srcimg);break;
case 2;
$im = imagecreatefromjpeg($srcimg);break;
case 3;
$im = imagecreatefrompng($srcimg);break;
}
//開(kāi)始縮略操作
$thumb = imagecreatetruecolor($thumb_width, $thumb_height);
imagecopyresized($thumb, $im, 0, 0, 0 ,0, $thumb_width, $thumb_height, $srcimg_arr[0], $srcimg_arr[1]);
switch($srcimg_arr[2]){
case 1:
imagegif($thumb); break;
case 2;
imagejpeg($thumb); break;
case 3;
imagepng($thumb); break;
}
imagepng($thumb);
imagedestroy($thumb);
}
//測(cè)試 時(shí)不要同時(shí)使用這兩個(gè)函數(shù)。
//watermark('datu.png','xiaotu.png',5);
thumbnail('abc.png',3);
?>
復(fù)制代碼 代碼如下:
<?php
/************************************
//函數(shù): watermark($bigimg, $smallimg, $coord = 1)
//作用: 添加水印
//參數(shù):
$bigimg 必選。大圖片--要加上水印的圖片
$smallimg 必選。小圖片
$coord 可選。水印在大圖中的位置,
1 左上角; 2 右上角; 3 右下角; 4 左下角; 5 中間
//示例: watermark('datu.png', 'xiaotu.png', 3); //給datu.png打上水印,水印位置在右下角
*************************************/
function watermark($bigimg, $smallimg, $coord = 1){
//載入兩張圖片,并轉(zhuǎn)成php識(shí)別的編碼格式,
//等同于 imagecreate 函數(shù),只不過(guò)這里創(chuàng)建的不是一個(gè)空?qǐng)D片。
$bi = getimagesize($bigimg);
switch($bi[2]){
case 1:
$im1 = imagecreatefromgif($bigimg);break;
case 2;
$im1 = imagecreatefromjpeg($bigimg);break;
case 3;
$im1 = imagecreatefrompng($bigimg);break;
}
$si = getimagesize($smallimg);
switch($si[2]){
case 1:
$im2 = imagecreatefromgif($smallimg);break;
case 2;
$im2 = imagecreatefromjpeg($smallimg);break;
case 3;
$im2 = imagecreatefrompng($smallimg);break;
}
// 創(chuàng)建水印--原理:復(fù)制小圖到大圖上。這里注意坐標(biāo)值的計(jì)算
switch($coord){
case 1:
imagecopy ( $im1, $im2, 0, 0, 0, 0, $si[0], $si[1] ); break;
case 2:
imagecopy ( $im1, $im2, $bi[0]-$si[0], 0, 0, 0, $si[0], $si[1] ); break;
case 3:
imagecopy ( $im1, $im2, $bi[0]-$si[0], $bi[1]-$si[1], 0, 0, $si[0], $si[1] ); break;
case 4:
imagecopy ( $im1, $im2, 0, $bi[1]-$si[1], 0, 0, $si[0], $si[1] ); break;
case 5:
imagecopy ( $im1, $im2, ($bi[0]-$si[0])/2, ($bi[1]-$si[1])/2, 0, 0, $si[0], $si[1] ); break;
}
//根據(jù)后綴名生成不同格式的圖片文件
switch($bi[2]){
case 1:
imagegif($im1);break;
case 2;
imagejpeg($im1);break;
case 3;
imagepng($im1);break;
}
imagedestroy($im1);
}
/************************************************
//函數(shù): thumbnail($srcimg, $multiple)
//作用: 生成一張縮略圖
//參數(shù):
// $srcimg 必選。源圖片文件名
// $multiple 可選??s略倍數(shù),默認(rèn)為2倍,即縮小為原來(lái)的1/2
//注意: 只支持gif、jpg、png的格式圖片。
//示例: thumbnail('我的圖片.jpg', 5);
*************************************************/
function thumbnail($srcimg, $multiple = 2){
//載入圖片并保存其信息到數(shù)組
$srcimg_arr = getimagesize($srcimg);
//計(jì)算縮略倍數(shù)
$thumb_width = $srcimg_arr[0] / $multiple;
$thumb_height = $srcimg_arr[1] / $multiple;
//判斷:要建立什么格式的圖片(轉(zhuǎn)成php識(shí)別的編碼)
switch($srcimg_arr[2]){
case 1:
$im = imagecreatefromgif($srcimg);break;
case 2;
$im = imagecreatefromjpeg($srcimg);break;
case 3;
$im = imagecreatefrompng($srcimg);break;
}
//開(kāi)始縮略操作
$thumb = imagecreatetruecolor($thumb_width, $thumb_height);
imagecopyresized($thumb, $im, 0, 0, 0 ,0, $thumb_width, $thumb_height, $srcimg_arr[0], $srcimg_arr[1]);
switch($srcimg_arr[2]){
case 1:
imagegif($thumb); break;
case 2;
imagejpeg($thumb); break;
case 3;
imagepng($thumb); break;
}
imagepng($thumb);
imagedestroy($thumb);
}
//測(cè)試 時(shí)不要同時(shí)使用這兩個(gè)函數(shù)。
//watermark('datu.png','xiaotu.png',5);
thumbnail('abc.png',3);
?>
您可能感興趣的文章:
- PHP的圖像處理實(shí)例小結(jié)【文字水印、圖片水印、壓縮圖像等】
- PHP圖像處理技術(shù)實(shí)例總結(jié)【繪圖、水印、驗(yàn)證碼、圖像壓縮】
- 用來(lái)給圖片加水印的PHP類
- php給圖片添加文字水印方法匯總
- PHP圖片處理之使用imagecopy函數(shù)添加圖片水印實(shí)例
- 超級(jí)好用的一個(gè)php上傳圖片類(隨機(jī)名,縮略圖,加水印)
- PHP Imagick完美實(shí)現(xiàn)圖片裁切、生成縮略圖、添加水印
- php gd2 上傳圖片/文字水印/圖片水印/等比例縮略圖/實(shí)現(xiàn)代碼
- php下圖片文字混合水印與縮略圖實(shí)現(xiàn)代碼
- php文字水印和php圖片水印實(shí)現(xiàn)代碼(二種加水印方法)
- PHP圖像處理 imagestring添加圖片水印與文字水印操作示例
相關(guān)文章
php基于curl主動(dòng)推送最新內(nèi)容給百度收錄的方法
這篇文章主要介紹了php基于curl主動(dòng)推送最新內(nèi)容給百度收錄的方法,分析了百度鏈接的提交方式及curl主動(dòng)推送的實(shí)現(xiàn)方法,需要的朋友可以參考下2016-10-10PHP實(shí)現(xiàn)可精確驗(yàn)證身份證號(hào)碼的工具類示例
這篇文章主要介紹了PHP實(shí)現(xiàn)可精確驗(yàn)證身份證號(hào)碼的工具類,涉及php針對(duì)字符串的截取、計(jì)算、判斷等相關(guān)操作技巧,并附帶說(shuō)明了身份證號(hào)碼的原理,需要的朋友可以參考下2018-05-05php將文件夾打包成zip文件的簡(jiǎn)單實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇php將文件夾打包成zip文件的簡(jiǎn)單實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-10-10php中通過(guò)數(shù)組進(jìn)行高效隨機(jī)抽取指定條記錄的算法
php使用數(shù)組array_rand()函數(shù)進(jìn)行高效隨機(jī)抽取指定條數(shù)的記錄,可以隨機(jī)抽取數(shù)據(jù)庫(kù)中的記錄,適合進(jìn)行隨機(jī)展示和抽獎(jiǎng)程序2013-09-09php數(shù)字每三位加逗號(hào)的功能函數(shù)
這篇文章主要介紹了php數(shù)字每三位加逗號(hào)的功能函數(shù),想知道如何做到數(shù)字每三位加逗號(hào)的朋友可以參考下2015-10-10