php随笔1-php图片处理
php图片处理的知识内容
upload_image.php:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>图片上传页</title>
<style type="text/css">
.file-box{ position:relative;width:340px}
.txt{ height:22px; border:1px solid #cdcdcd; width:200px;border-right:none;}
.btn{ background-color:#FFF; border:1px solid #CDCDCD;height:26px; width:70px;}
.file{ position:absolute; top:0; right:80px; height:24px; filter:alpha(opacity:0);opacity: 0;width:260px }
</style>
<script type="text/javascript" >
//JS获取路径 ---成功
function change()
{
var pic=document.getElementById('pic');
var file=document.getElementById('fileField');
pic.src=file.value;
if(file.files){
if(file.files.item(0)){
//src = window.URL.createObjectURL(fileObj.files[0]);
url=window.URL.createObjectURL(file.files.item(0));
document.getElementById('textfield').value = pic.src ;
pic.src=url;
}
}
}
</script>
</head> <body>
<form action="check_image.php" method="post" enctype="multipart/form-data">
<table border="1">
<tr>
<td>上传人名称:</td>
<td><input type="text" class='txt' name="username" /></td>
</tr>
<tr>
<td>*上传图片:</td>
<td><div class="file-box"><input type='text' name='textfield' id='textfield' class='txt' /><input type='button' class='btn' value='浏览...' /><br />
<input type="file" name="uploadfile" class="file" id="fileField" size="28" onchange="change();" />
<input type="hidden" id="theFilePath" name="theFilePath" value="">
</div>
</td>
</tr>
<tr>
<td colspan="2">
<small><em> * 可接受的图像格式:GIF,JPG、JPEG和PNG。上传后图片会变为1280X960大小。</em></small>
</td>
</tr>
<tr>
<td>图片标题:</td>
<td><input type="text" class='txt' name="caption"/></td>
</tr>
<tr>
<td colspan="2" style="text-align:center;">
<input type="submit" name="submit" value="Upload" class='btn' />
</td>
</tr>
</table>
<img src="" name="pic" id="pic" /> <br />
</form>
</body>
</html>
check_image.php 集合图片上传,MySQL数据库保存,图片放大至1280X960,图片加文字,图片PS处理,图片缩略图,图片打LOGO水印。功能集合强大。
<?php
//session
session_start();
if($_POST['submit'] == 'Upload')
{
if($_FILES['uploadfile']['error'] != UPLOAD_ERR_OK)
{
switch($_FILES['uploadfile']['error'])
{
case UPLOAD_ERR_INI_SIZE: //其值为 1,上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值
die('上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值');
break;
case UPLOAD_ERR_FORM_SIZE: //其值为 2,上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值
die('上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值');
break;
case UPLOAD_ERR_PARTIAL: //其值为 3,文件只有部分被上传
die('文件只有部分被上传');
break;
case UPLOAD_ERR_NO_FILE: //其值为 4,没有文件被上传
die('没有文件被上传');
break;
case UPLOAD_ERR_NO_TMP_DIR: //其值为 6,找不到临时文件夹
die('找不到临时文件夹');
break;
case UPLOAD_ERR_CANT_WRITE: //其值为 7,文件写入失败
die('文件写入失败');
break;
case UPLOAD_ERR_EXTENSION: //其他异常
die('其他异常');
break;
}
}
//判断图片的后缀
switch($type)
{
case IMAGETYPE_GIF:
$ext = '.gif';
break;
case IMAGETYPE_JPEG:
$ext = '.jpg';
break;
case IMAGETYPE_PNG:
$ext = '.png';
break;
default :
die('您上传的文件不支持的文件类型。');
}
//关键位置-取出文件后缀
$_SESSION['ext'] = $ext;
} /*
//改变图像的大小为1280x960的方法
function resizepic($imgsrc,$imagename,$toimgwidth,$toimgheigth)
{
//$imgsrc:图片路径 $imgname: 图片保存的名称 $toimgwidth: 图片最终的宽度 $toimgheigth: 图片最终的高度
$arr = getimagesize($imgsrc);
$imgWidth = $toimgwidth;
$imgHeigth = $toimgheigth;
if($_SESSION['ext'] == '.jpg')
{
header('Content-Type:image/jpeg');
$imgSrc = imagecreatefromjpeg($imgsrc);
}
if($_SESSION['ext'] == '.png')
{
header('Content-Type:image/png');
$imgSrc = imagecreatefrompng($imgsrc);
}
if($_SESSION['ext'] == '.gif')
{
header('Content-Type:image/gif');
$imgSrc = imagecreatefromgif($imgsrc);
} $image = imagecreatetruecolor($imgWidth, $imgHeigth);
imagecopyresampled($image,$imgSrc,0,0,0,0,$imgWidth,$imgHeigth,$arr[0],$arr[1]);
if($_SESSION['ext'] == '.jpg')
{
imagejpeg($image,$dir.'/'.$imagename);
}
if($_SESSION['ext'] == '.png')
{
imagepng($image,$dir.'/'.$imagename);
}
if($_SESSION['ext'] == '.gif')
{
imagegif($image,$dir.'/'.$imagename);
}
//销毁由url生成的图片
imagedestroy($image);
}
*/ //创建moviesite数据库--MySQL
$coon = mysql_connect("localhost","root","lifu") or die('不能连接到数据库');
if (!$coon)
{
die('无法连接: ' . mysql_error());
} if (mysql_query("CREATE DATABASE if not exists moviesite",$coon)) //如果没有就创建数据库
{
echo "数据库创建成功<br>";
}
else
{
echo "数据库创建错误: " . mysql_error();
}
// 创建images表
mysql_select_db("moviesite", $coon);
//如果没有就创建表
$sql = "CREATE TABLE if not exists images
(
image_id int NOT NULL AUTO_INCREMENT,
PRIMARY KEY(image_id),
image_caption varchar(15),
image_username varchar(15),
image_filename varchar(15),
image_date datetime
)"; mysql_query($sql,$coon);
mysql_close($coon); //修改图片效果
$db = mysql_connect('localhost','root','lifu') or die('不能连接到数据库');
mysql_select_db('moviesite',$db) or die(mysql_error($db)); //上传文件的路径
$dir = 'D:\phpStudy\WWW\loadimages\images'; //缩略图的路径
$thumbdir = 'D:\phpStudy\WWW\loadimages\images\thumbs'; //设置环境变量
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: //其值为 1,上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值
die('上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值');
break;
case UPLOAD_ERR_FORM_SIZE: //其值为 2,上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值
die('上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值');
break;
case UPLOAD_ERR_PARTIAL: //其值为 3,文件只有部分被上传
die('文件只有部分被上传');
break;
case UPLOAD_ERR_NO_FILE: //其值为 4,没有文件被上传
die('没有文件被上传');
break;
case UPLOAD_ERR_NO_TMP_DIR: //其值为 6,找不到临时文件夹
die('找不到临时文件夹');
break;
case UPLOAD_ERR_CANT_WRITE: //其值为 7,文件写入失败
die('文件写入失败');
break;
case UPLOAD_ERR_EXTENSION: //其他异常
die('其他异常');
break;
}
}
*/ $image_caption = $_POST['caption'];
$image_username = $_POST['username'];
$image_date = date('Y-m-D');
/*getimagesize方法返回一个数组,
$width : 索引 0 包含图像宽度的像素值,
$height : 索引 1 包含图像高度的像素值,
$type : 索引 2 是图像类型的标记:
= GIF,2 = JPG, 3 = PNG, 4 = SWF, 5 = PSD, 6 = BMP,
= TIFF(intel byte order),8 = TIFF(motorola byte order),
= JPC,10 = JP2,11 = JPX,12 = JB2,13 = SWC,14 = IFF,15 = WBMP,16 = XBM,
$attr : 索引 3 是文本字符串,内容为“height="yyy" width="xxx"”,可直接用于 IMG 标记
*/ list($width,$height,$type,$attr) = getimagesize($_FILES['uploadfile']['tmp_name']); //imagecreatefromgXXX方法从一个url路径中创建一个新的图片
switch($type)
{
case IMAGETYPE_GIF:
$image = imagecreatefromgif($_FILES['uploadfile']['tmp_name']) or die('你上传的文件是不支持的文件类型');
$ext = '.gif';
$array = getimagesize($_FILES['uploadfile']['tmp_name']);
break;
case IMAGETYPE_JPEG:
$image = imagecreatefromjpeg($_FILES['uploadfile']['tmp_name']) or die('你上传的文件是不支持的文件类型');
$ext = '.jpg';
$array = getimagesize($_FILES['uploadfile']['tmp_name']);
break;
case IMAGETYPE_PNG:
$image = imagecreatefrompng($_FILES['uploadfile']['tmp_name']) or die('你上传的文件是不支持的文件类型');
$ext = '.png';
$array = getimagesize($_FILES['uploadfile']['tmp_name']);
break;
default :
die('您上传的文件不支持的文件类型。');
} //将图片改为1280X960
//新建一个指定大小的真彩色图像big
$big = imagecreatetruecolor(1280, 960);
//重采样拷贝部分图像并调整大小为1280X960
imagecopyresampled($big, $image, 0, 0, 0, 0, 1280, 960, $array[0], $array[1]); $query = 'insert into images(image_caption,image_username,image_date) values ("'.$image_caption.'","'.$image_username.'",now())';
mysql_query($query , $db) or die(mysql_error($db));
$last_id = mysql_insert_id();
//用写入的id作为图片的名字,避免同名的文件存放在同一目录中
$imagename = $last_id.$ext;
$image_id = $last_id; $query = 'update images set image_filename="'.$imagename.'" where image_id='.$last_id;
mysql_query($query , $db) or die(mysql_error($db)); //有url指定的图片创建图片并保存到指定目录
switch($type)
{
case IMAGETYPE_GIF:
imagegif($big,$dir.'/'.$imagename);
break;
case IMAGETYPE_JPEG:
imagejpeg($big,$dir.'/'.$imagename);
break;
case IMAGETYPE_PNG:
imagepng($big,$dir.'/'.$imagename);
break;
}
//销毁由url生成的图片
imagedestroy($big);
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.$_SESSION['ext']);
} //如果是保存图片
if($_POST['submit'] == 'Save')
{
if(isset($_POST['id']) && ctype_digit($_POST['id']) && file_exists($dir.'/'.$_POST['id'].$_SESSION['ext']))
{
if($_SESSION['ext'] == '.jpg')
{
$image = imagecreatefromjpeg($dir.'/'.$_POST['id'].$_SESSION['ext']);
}
if($_SESSION['ext'] == '.png')
{
$image = imagecreatefrompng($dir.'/'.$_POST['id'].$_SESSION['ext']);
}
if($_SESSION['ext'] == '.gif')
{
$image = imagecreatefromgif($dir.'/'.$_POST['id'].$_SESSION['ext']);
}
}
else
{
die('指定的无效图像');
} $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']))
{ /*
array imagettftext ( resource $image , float $size , float $angle , int $x , int $y , int $color , string $fontfile , string $text )
$image 图像源 $size 字体大小 $angle 逆时针旋转角度 $fontfile 字体类型 $text 文本内容
*/
imagettftext($image , 12 , 0 , 20 , 20 , 0 , $font , $image_caption);
} //图片指定位置打LOGO
if(isset($_POST['emb_logo']))
{
//获取水印图片的尺寸并创建水印
list($wmk_width , $wmk_height) = getimagesize('images/logo.png');
//$x = ($width-$wmk_width) / 2;
//$y = ($height-$wmk_height)/2;
$x = $width-$wmk_width;
$y = $height-$wmk_height;
$wmk = imagecreatefrompng('images/logo.png');
//把水印图片和原图片合并在一起
/*
将 wmk 图像中坐标从 0,0 开始,宽度为 $wmk_width,高度为 $wmk_height 的一部分拷贝到 image 图像中坐标为 $x 和 $y 的位置上。
两图像将根据 pct=20 来决定合并程度,其值范围从 0 到 100。当 pct = 0 时,实际上什么也没做,当为
100 时对于调色板图像本函数和 imagecopy() 完全一样,它对真彩色图像实现了 alpha 透明。
*/
imagecopymerge($image , $wmk , $x , $y , 0 , 0 , $wmk_width , $wmk_height , 20);
//清除水印图片
imagedestroy($wmk);
} //缩略图大小
$thumb_width = $width * 0.10;
$thumb_height = $height * 0.10; //创建一个缩略图
$thumb = imagecreatetruecolor($thumb_width, $thumb_height);
imagecopyresampled($thumb, $image, 0, 0, 0, 0, $thumb_width, $thumb_height, $width, $height); //保存缩略图
if($_SESSION['ext'] == '.jpg')
{
imagejpeg($thumb, $thumbdir . '/' . $_POST['id'] . $_SESSION['ext'], 100);
}
if($_SESSION['ext'] == '.png')
{
imagepng($thumb, $thumbdir . '/' . $_POST['id'] . $_SESSION['ext']);
}
if($_SESSION['ext'] == '.gif')
{
imagegif($thumb, $thumbdir . '/' . $_POST['id'] . $_SESSION['ext']);
}
echo "修改好的缩略图:<img src='"."images/thumbs/" . $_POST['id'] . $_SESSION['ext']."' alt='' /> <br />";
//清除缩略图
imagedestroy($thumb); //保存原图
if($_SESSION['ext'] == '.jpg')
{
imagejpeg($image , $dir.'/'.$_POST['id'].$_SESSION['ext'] , 100);
}
if($_SESSION['ext'] == '.png')
{
//压缩等级必须是0-9的png文件
imagepng($image , $dir.'/'.$_POST['id'].$_SESSION['ext']);
}
if($_SESSION['ext'] == '.gif')
{
imagegif($image , $dir.'/'.$_POST['id'].$_SESSION['ext']);
}
echo "修改好的大图:<img src='"."images/" . $_POST['id'] . $_SESSION['ext']."' alt='' /> <br />";
?>
<html>
<head>
<title>你的图片在这!</title>
</head>
<body>
<h1>你的图片被保存!</h1>
<img src="data:images/<?php echo $_POST['id'];?>.jpg" alt="" />
</body>
</html>
<?php
}
else
{
?>
<html>
<head>
<title>你的图片在这!</title>
</head>
<body>
<p>这里是你上传到服务器上的图片:</p>
</body>
</html>
<?php
if($_POST['submit'] == 'Upload')
{
$imagename = 'images/'.$image_id.$_SESSION['ext'];
}
else
{
$imagename = 'image_effect.php?id='.$image_id.'&e='.$_POST['effect'];
if(isset($_POST['emb_caption']))
{
$imagename .= '&capt='.urlencode($image_caption);
}
if(isset($_POST['emb_logo']))
{
$imagename .= '&logo=1';
}
}
?>
<div>
<?php echo "src:".$imagename ; ?>
<img src="<?php echo $imagename;?>" style="float:left;" alt="" />
<table>
<tr>
<td>Image save as:</td>
<td><?php echo "moviesite数据库images表第".$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>你可以从下面的选项列表中对你的图像应用一个特殊的效果。注:使用任何一个过滤器,保存一个图像 <em>可以撤消</em></p>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post"> <input type="hidden" name="id" value="<?php echo $image_id;?>"/>
<select name="effect" id="">
<option value="-1">保持原状</option>
<?php
echo '<option value="'.IMG_FILTER_GRAYSCALE.'" ';
if(isset($_POST['effect']) && $_POST['effect'] == IMG_FILTER_GRAYSCALE)
{
echo 'selected="selected"';
}
echo ' >灰度图像</option>'; echo '<option value="'.IMG_FILTER_GAUSSIAN_BLUR.'"';
if(isset($_POST['effect']) && $_POST['effect'] == IMG_FILTER_GAUSSIAN_BLUR)
{
echo ' selected="selected"';
}
echo '>高斯算法模糊图像</option>'; echo '<option value="'.IMG_FILTER_EMBOSS.'"';
if(isset($_POST['effect']) && $_POST['effect'] == IMG_FILTER_EMBOSS)
{
echo 'selected="selected"';
}
echo '>图像浮雕化</option>'; echo '<option value="'.IMG_FILTER_NEGATE.'"';
if(isset($_POST['effect']) && $_POST['effect'] == IMG_FILTER_NEGATE)
{
echo 'selected="selected"';
}
echo '>图像中所有颜色反转</option>';
?>
</select><br />
<?php
echo '<input type="checkbox" name="emb_caption"';
if(isset($_POST['emb_caption']))
{
echo ' checked="checked"';
}
echo ' />是否嵌入在图像的标题?';
echo '<br />'; //添加水印选项
echo '<input type="checkbox" name="emb_logo" ';
if(isset($_POST['emb_logo']))
{
echo 'checked="checked"';
}
echo ' />是否嵌入668LOGO?'. '<br />';
?>
<input type="submit" value="Save" name="submit" />
<!--<input type="submit" value="Preview" name="submit" />-->
</form>
</div> <?php
}
mysql_close($db);
?>
本来有一个Preview的,后来没弄了,但是代码还是给上 image_effect.php ,已经把Preview注释掉了。
<?php
//上传文件的路径
$dir = 'D:\phpStudy\WWW\loadimages\images';
//设置环境变量
putenv('GDFONTPATH='.'C:\Windows\Fonts');
$font = "C:\Windows\Fonts\arial.ttf"; if(isset($_GET['id']) && ctype_digit($_GET['id']) && file_exists($dir.'/'.$_GET['id'].$_SESSION['ext']))
{
$image = imagecreatefromjpeg($dir.'/'.$_GET['id'].$_SESSION['ext']);
}
else
{
die('invalid image specified');
} $effect = (isset($_GET['e'])) ? $_GET['e'] : -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($_GET['capt']))
{
//echo $_GET['capt'];
imagettftext($image, 12, 0, 20, 20, 0, $font, $_GET['capt']);
} if(isset($_GET['logo']))
{
list($widht , $height) = getimagesize($dir.'/'.$_GET['id'].$_SESSION['ext']);
list($wmk_width , $wmk_height) = getimagesize('images/logo.png');
$x = $width-$wmk_width;
$y = $height-$wmk_height;
$wmk = imagecreatefrompng('images/logo.png');
imagecopymerge($image , $wmk , $x , $y , 0 , 0 , $wmk_width , $wmk_height , 20);
imagedestroy($wmk);
} if($_SESSION['ext'] == '.jpg')
{
header('Content-Type:image/jpeg');
imagejpeg($image , '' , 100);
}
if($_SESSION['ext'] == '.png')
{
header('Content-Type:image/png');
imagepng($image , '' );
}
if($_SESSION['ext'] == '.gif')
{
header('Content-Type:image/gif');
imagegif($image , '' );
} ?>
内容总结:
本人是自学的php,代码书写多有不规范之处,并且有些位置的代码有重复累赘。以后需要加强。
upload_image.php: 主要是 HTML+Javascritp+Css 没什么可说的,主要就 javascript 调用 window.URL.createObjectURL(fileObj) 方法。获取图片的相对路径,并做图片的展示。
check_image.php: 1、session 用于保存从 upload_image.php 传递过来的图片的后缀名。
2、数据库moviesite创建,images表的创建
$sql = "CREATE TABLE if not exists images
(
image_id int NOT NULL AUTO_INCREMENT,
PRIMARY KEY(image_id),
image_caption varchar(15),
image_username varchar(15),
image_filename varchar(15),
image_date datetime
)";
3、使用 imagecreatetruecolor 和 imagecopyresampled 将图片大小调整为1280X960.然后将图片上传保存到指定位置。
//将图片改为1280X960
//新建一个指定大小的真彩色图像big
$big = imagecreatetruecolor(1280, 960);
//重采样拷贝部分图像并调整大小为1280X960
imagecopyresampled($big, $image, 0, 0, 0, 0, 1280, 960, $array[0], $array[1]);
4、如果图片已经上传,则从数据库中取图片名字
$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.$_SESSION['ext']);
5、bool imagefilter ( resource $src_im
, int $filtertype
[, int $arg1
[, int $arg2
[, int $arg3
]]] ) 对图像使用过滤器 PS图片
imagefilter() 把过滤器 filtertype 应用到图像上,在需要时使用 arg1,arg2 和 arg3。 filtertype 可以是下列中的一个: IMG_FILTER_NEGATE:将图像中所有颜色反转。
IMG_FILTER_GRAYSCALE:将图像转换为灰度的。
IMG_FILTER_BRIGHTNESS:改变图像的亮度。用 arg1 设定亮度级别。
IMG_FILTER_CONTRAST:改变图像的对比度。用 arg1 设定对比度级别。
IMG_FILTER_COLORIZE:与 IMG_FILTER_GRAYSCALE 类似,不过可以指定颜色。用 arg1,arg2 和 arg3 分别指定 red,blue 和 green。每种颜色范围是 0 到 255。
IMG_FILTER_EDGEDETECT:用边缘检测来突出图像的边缘。
IMG_FILTER_EMBOSS:使图像浮雕化。
IMG_FILTER_GAUSSIAN_BLUR:用高斯算法模糊图像。
IMG_FILTER_SELECTIVE_BLUR:模糊图像。
IMG_FILTER_MEAN_REMOVAL:用平均移除法来达到轮廓效果。
IMG_FILTER_SMOOTH:使图像更柔滑。用 arg1 设定柔滑级别。
6、图片加文字
//图片指定位置打印文字
if(isset($_POST['emb_caption']))
{ /*
array imagettftext ( resource $image , float $size , float $angle , int $x , int $y , int $color , string $fontfile , string $text )
$image 图像源 $size 字体大小 $angle 逆时针旋转角度 $fontfile 字体类型 $text 文本内容
*/
imagettftext($image , 12 , 0 , 20 , 20 , 0 , $font , $image_caption);
}
7、图片打LOGO
//图片指定位置打LOGO
if(isset($_POST['emb_logo']))
{
//获取水印图片的尺寸并创建水印
list($wmk_width , $wmk_height) = getimagesize('images/logo.png');
//$x = ($width-$wmk_width) / 2;
//$y = ($height-$wmk_height)/2;
$x = $width-$wmk_width;
$y = $height-$wmk_height;
$wmk = imagecreatefrompng('images/logo.png');
//把水印图片和原图片合并在一起
/*
将 wmk 图像中坐标从 0,0 开始,宽度为 $wmk_width,高度为 $wmk_height 的一部分拷贝到 image 图像中坐标为 $x 和 $y 的位置上。
两图像将根据 pct=20 来决定合并程度,其值范围从 0 到 100。当 pct = 0 时,实际上什么也没做,当为
100 时对于调色板图像本函数和 imagecopy() 完全一样,它对真彩色图像实现了 alpha 透明。
*/
imagecopymerge($image , $wmk , $x , $y , 0 , 0 , $wmk_width , $wmk_height , 20);
//清除水印图片
imagedestroy($wmk);
}
8、缩略图 128X96 大小
//缩略图大小
$thumb_width = $width * 0.10;
$thumb_height = $height * 0.10; //创建一个缩略图
$thumb = imagecreatetruecolor($thumb_width, $thumb_height);
imagecopyresampled($thumb, $image, 0, 0, 0, 0, $thumb_width, $thumb_height, $width, $height);
php随笔1-php图片处理的更多相关文章
- Winform 图片鼠标滚动查看(放大,缩小,旋转,拖动查看)[日常随笔]
方法千千万,我只是其中一笔[通过控制PictureBox来控制图片,图片完全施展在控件中]...几久不做,还真有点陌生! 窗体构造中添加鼠标滚动: /// <summary> /// 窗体 ...
- android 学习随笔七(网络:图片及文本传输及线程关系 )
主线程.子线程.UI的关系 简单的HTTP请求 -------------------------------------------------------- public class MainAc ...
- Android随笔--使用ViewPager实现简单地图片的左右滑动切换
Android中图片的左右切换随处可见,今天我也试着查阅资料试着做了一下,挺简单的一个小Demo,却也发现了一些问题,话不多说,上代码~: 使用了3个xml文件作为ViewPager的滑动page,布 ...
- 继上一篇随笔,优化3张以上图片轮播React组件
import React from 'react'; import PropTypes from 'prop-types'; import {getSwipeWay} from '../utils/s ...
- ctf中关于图片的隐写随笔(不全)
①JPG图片的结束符,十六进制常为FFD9 ②binwalk的原理是:检查常见的文件头信息,如果不符合,一定有隐藏信息.③JPG是有损压缩,PNG是无损压缩,BMP是不压缩. 隐写的基本原理:图片查看 ...
- Python随笔--爬虫(下载妹子图片)
- 【随笔】设置title标题图标为自定义图片
第一步: 利用图标工具(有很多)制作图标文件(favicon.ico)上传到网站所在的服务器的根目录下,这个文件必须是16*16大小的图标文件. 第二步: 在<head></head ...
- 《高性能javascript》 领悟随笔之-------DOM编程篇(二)
<高性能javascript> 领悟随笔之-------DOM编程篇二 序:在javaSctipt中,ECMASCRIPT规定了它的语法,BOM实现了页面与浏览器的交互,而DOM则承载着整 ...
- C#开发微信门户及应用(19)-微信企业号的消息发送(文本、图片、文件、语音、视频、图文消息等)
我们知道,企业号主要是面向企业需求而生的,因此内部消息的交流显得非常重要,而且发送.回复消息数量应该很可观,对于大企业尤其如此,因此可以结合企业号实现内部消息的交流.企业号具有关注安全.消息无限制等特 ...
随机推荐
- ubuntu下nvm,node以及npm的安装与使用
一:安装nvm 首先下载nvm,这里我们需要使用git,如果没有安装git,可以使用 sudo apt-get install git 来安装 git clone https://github.com ...
- beforefieldinit释义(2)
首先来看一段代码: using System; namespace BeforeFieldInit { internal class Foo { Foo(){ Console.WriteLine(&q ...
- golang Rsa
package models import ( "crypto/rand" "crypto/rsa" "crypto/x509" " ...
- c 指针 及其位运算循环移动拔河比赛问题代码
week_2_day1_7.7 周一//用字符数组 来实现 字母大小写转换#include<stdio.h>void desc( char *a ,int n){ char *i ...
- J2SE知识点摘记(四)
1. 抽象类(abstract) 抽象类和抽象方法都必须用abstract关键字来修饰. 抽象类不能被直接实例化,也就是不能直接用new关键字去产生对象. 抽象方法只需声明,而不需实现. ...
- RoHS认证简介
RoHS认证是<电气.电子设备中限制使用某些有害物质指令>(The restriction of the use of certain hazardous substances in el ...
- DNS解析服务使用的系统对网站的安全起着很重要的作用
1 采用独享的DNS服务器解析系统 DNS解析服务使用的系统对网站的安全极其重要.现在国内的DNS服务器普遍是公用的,即是你的企业网站DNS解析服务和其他许多网站都是由同一个DNS服务器提供.一旦某个 ...
- Codeforces 734F Anton and School(位运算)
[题目链接] http://codeforces.com/problemset/problem/734/F [题目大意] 给出数列b和数列c,求数列a,如果不存在则输出-1 [题解] 我们发现: bi ...
- poj3589---判断两个数有多接近
#include <stdio.h> #include <stdlib.h> int main() { ],s2[]; int a,b,i,j,n; scanf("% ...
- network is unreachable 解决方案之一
请按http://blog.csdn.net/oxiaoxio/article/details/41775183 一文中的设置方法设置: