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图片处理的更多相关文章

  1. Winform 图片鼠标滚动查看(放大,缩小,旋转,拖动查看)[日常随笔]

    方法千千万,我只是其中一笔[通过控制PictureBox来控制图片,图片完全施展在控件中]...几久不做,还真有点陌生! 窗体构造中添加鼠标滚动: /// <summary> /// 窗体 ...

  2. android 学习随笔七(网络:图片及文本传输及线程关系 )

    主线程.子线程.UI的关系 简单的HTTP请求 -------------------------------------------------------- public class MainAc ...

  3. Android随笔--使用ViewPager实现简单地图片的左右滑动切换

    Android中图片的左右切换随处可见,今天我也试着查阅资料试着做了一下,挺简单的一个小Demo,却也发现了一些问题,话不多说,上代码~: 使用了3个xml文件作为ViewPager的滑动page,布 ...

  4. 继上一篇随笔,优化3张以上图片轮播React组件

    import React from 'react'; import PropTypes from 'prop-types'; import {getSwipeWay} from '../utils/s ...

  5. ctf中关于图片的隐写随笔(不全)

    ①JPG图片的结束符,十六进制常为FFD9 ②binwalk的原理是:检查常见的文件头信息,如果不符合,一定有隐藏信息.③JPG是有损压缩,PNG是无损压缩,BMP是不压缩. 隐写的基本原理:图片查看 ...

  6. Python随笔--爬虫(下载妹子图片)

  7. 【随笔】设置title标题图标为自定义图片

    第一步: 利用图标工具(有很多)制作图标文件(favicon.ico)上传到网站所在的服务器的根目录下,这个文件必须是16*16大小的图标文件. 第二步: 在<head></head ...

  8. 《高性能javascript》 领悟随笔之-------DOM编程篇(二)

    <高性能javascript> 领悟随笔之-------DOM编程篇二 序:在javaSctipt中,ECMASCRIPT规定了它的语法,BOM实现了页面与浏览器的交互,而DOM则承载着整 ...

  9. C#开发微信门户及应用(19)-微信企业号的消息发送(文本、图片、文件、语音、视频、图文消息等)

    我们知道,企业号主要是面向企业需求而生的,因此内部消息的交流显得非常重要,而且发送.回复消息数量应该很可观,对于大企业尤其如此,因此可以结合企业号实现内部消息的交流.企业号具有关注安全.消息无限制等特 ...

随机推荐

  1. 如何调教Android Studio-Windows安装AS后的必备工作

    未完待续... 工欲善其事必先利其器,你已经抛弃被大众诟病的Eclipse投入Google亲儿子Android Studio的怀抱,可是不了解As的脾气,怎么让它服服帖帖的为提高开发效率做贡献呢. 关 ...

  2. static 和 extern

    外部函数:定义的函数能被本文件和其他文件访问,默认所有的情况都是外部函数,不允许有同名的外部函数 >>extern定义和声明一个外部函数(可以省略) 内部函数:定义的函数只能被本文件访问, ...

  3. Java环境配置原理

    Java环境配置原理详解 1.Jdk安装目录文件说明: 一般jdk安装目录及路径 \Java\jdk1.7.0_79\lib,里面主要包含以下文件夹. bin:主要存放的是java工具中常用命令如:j ...

  4. HDU 1004 - Let the Balloon Rise(map 用法样例)

    Problem Description Contest time again! How excited it is to see balloons floating around. But to te ...

  5. hql中in的用法

    平时经常用Hibernate,由于习惯表间不建立关联,所以HQL查询时候经常要用in语句. 由于表间没有建立外键的关联关系所以使用in是最常见的代替使用对象po中的set. 但是在写hql时如果在ne ...

  6. mysql性能优化学习笔记(5)数据库结构优化

    一.选择合适的数据类型    1.使用可存下数据的最小的数据类型    2.使用简单地数据类型,Int<varchar    3.尽可能使用not null定义字段    4.尽量少用text, ...

  7. CSS自学笔记(14):CSS3动画效果

    在CSS3中也新增了一些能够对元素创建动画处理的属性.通过这些新增的属性,我们可以实现元素从一种样式变换成另一种样式时为元素添加动态效果,我们就可以取代网页中的动态图片.flash动画和JavaScr ...

  8. vim calendar插件配置

    近日学习markdown,试着记个日志,安装了vim的知名插件calendar:https://github.com/mattn/calendar-vim. 使用网上配置,发现回车之后日期是昨天的,于 ...

  9. 用U盘装win7/XP系统的操作

    现在上网本越来越流行了,但是上网本是没有光驱的,那如何给上网本装系统就成了一个难题,其实不仅仅不带光驱的笔记本用户愁怎么装系统,那些没有光驱的台式机用户也愁.为了给这类用户提供方便,笔者今天以上网本装 ...

  10. 一种基于Qt的可伸缩的全异步C/S架构服务器实现(流浪小狗,六篇,附下载地址)

    本文向大家介绍一种基于Qt的伸缩TCP服务实现.该实现针对C/S客户端-服务集群应用需求而搭建.连接监听.数据传输.数据处理均在独立的线程池中进行,根据特定任务不同,可安排负责监听.传输.处理的线程数 ...