Home >Backend Development >PHP Tutorial >PHP图像操作教程:3D图、缩放、旋转、裁剪、添加水印_PHP教程

PHP图像操作教程:3D图、缩放、旋转、裁剪、添加水印_PHP教程

WBOY
WBOYOriginal
2016-07-13 10:11:421029browse

PHP图像操作教程:3D图、缩放、旋转、裁剪、添加水印

   图片操作在网站的应用相当广范,特别是现在互联网高度发达,很多内容都是以图片来显示,现在我们来讲讲用php来操作上传的图片,3D图片绘制、图片缩放、图片旋转、图片裁剪、图片添加水印。

  1、利用php gd库的函数绘制3D扇形统计图

代码如下  
header("content-type","text/html;charset=utf-8");
/*扇形统计图*/
$image = imagecreatetruecolor(100, 100); /*创建画布*/
/*设置画布需要的颜色*/
$white = imagecolorallocate($image,0xff,0xff,0xff);
$gray = imagecolorallocate($image, 0xc0, 0xc0, 0xc0);
$darkgray = imagecolorallocate($image, 0x90, 0x90, 0x90);
$navy = imagecolorallocate($image, 0x00, 0x00, 0x80);
$darknavy = imagecolorallocate($image, 0x00, 0x00, 0x50);
$red = imagecolorallocate($image, 0xff, 0x00, 0x00);
$darkred = imagecolorallocate($image, 0x90, 0x00, 0x00);

/*填充背景色*/
imagefill($image, 0, 0, $white);

/*3D制作*/
for($i = 60; $i > 50; $i--)
{
imagefilledarc($image, 50, $i, 100, 50, -160, 40, $darknavy, IMG_ARC_PIE);
imagefilledarc($image, 50, $i, 100, 50, 40, 75, $darkgray, IMG_ARC_PIE);
imagefilledarc($image, 50, $i, 100, 50, 75, 200, $darkred, IMG_ARC_PIE);
}

/*画椭圆弧并填充*/
imagefilledarc($image, 50, 50, 100, 50, -160, 40, $darknavy, IMG_ARC_PIE);
imagefilledarc($image, 50, 50, 100, 50, 40, 75, $darkgray, IMG_ARC_PIE);
imagefilledarc($image, 50, 50, 100, 50, 75, 200, $darkred, IMG_ARC_PIE);


/*画字符串*/
imagestring($image, 3, 15, 55, "30%", $white);
imagestring($image, 3, 45, 35, "60%", $white);
imagestring($image, 3, 60, 60, "10%", $white);

/*输出图像*/
header("content-type:image/png");
imagepng($image);

/*释放资源*/
imagedestroy($image);
?>

  2、对图片进行缩放

代码如下  

原图大小


PHP图像操作教程:3D图、缩放、旋转、裁剪、添加水印_PHP教程


header("content-type","text/html;charset=utf-8");

/*
*图片缩放
*@param string $filename 图片的url
*@param int $width 设置图片缩放的最大宽度
*@param int $height 设置图片缩放的最大高度
*/
function thumb($filename,$width=130,$height=130)
{
/*获取原图的大小*/
list($width_orig,$height_orig) = getimagesize($filename);

/*根据参数$width和$height,换算出等比例的高度和宽度*/
if($width && ($width_orig {
$width = ($height / $height_orig) * $width_orig;
}
else
{
$height = ($width / $width_orig) * $height_orig;
}

/*以新的大小创建画布*/
$image_p = imagecreatetruecolor($width, $height);

/*获取图像资源*/
$image = imagecreatefrompng($filename);

/*使用imagecopyresampled缩放*/
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);

/*保存缩放后的图片和命名*/

imagepng($image_p,'test.png');

/*释放资源*/

imagedestroy($image_p);
imagedestroy($image);
}

/*调用函数*/
thumb('1.png');
?>


缩放后的大小


PHP图像操作教程:3D图、缩放、旋转、裁剪、添加水印_PHP教程

  3、PHP对图像的裁剪

代码如下  

裁剪之前


PHP图像操作教程:3D图、缩放、旋转、裁剪、添加水印_PHP教程


header("content-type","text/html;charset=utf-8");
/*
*图片裁剪
*@param string $filename 图片的url
*@param int $width 图片裁剪宽度
*@param int $height 图片裁剪高度
*@param int $x 裁剪图片左边开始的位置
*@param int $y 裁剪图片顶边开始的位置
*/
function cut($filename,$x,$y,$width,$height)
{
/*获取图像资源,需要裁剪的图片*/
$image = imagecreatefrompng($filename);

/*以新的大小创建画布,保存裁剪后的图片*/

$image_p = imagecreatetruecolor($width, $height);

/*使用imagecopyresampled缩放*/
imagecopyresampled($image_p, $image, 0, 0, $x, $y, $width, $height, $width, $height);
/*保存裁剪后的图片和命名*/
imagepng($image_p,'test1.png');
/*释放资源*/
imagedestroy($image_p);
imagedestroy($image);
}

/*调用函数*/
cut('1.png',20,20,80,80);
?>


裁剪之后


PHP图像操作教程:3D图、缩放、旋转、裁剪、添加水印_PHP教程

  4、PHP为图像添加水印

代码如下  

没有水印


PHP图像操作教程:3D图、缩放、旋转、裁剪、添加水印_PHP教程


header("content-type","text/html;charset=utf-8");
/*
*给背景图片添加水印,背景图片格式png,水印格式gif
*@param string $filename 图片的url
*@param string $water 水印图片
*/
function watermark($filename,$water)
{
/*获取原图的大小*/
list($b_w,$b_h) = getimagesize($filename);
/*获取水印图片的大小*/
list($w_w,$w_h) = getimagesize($water);
/*在背景图片中放水印图片的随机起始位置*/
$posX =rand(0,($b_w - $w_w));
$posY =rand(0,($b_h - $w_h));
/*获取图像资源,需要裁剪的图片*/
$back = imagecreatefrompng($filename);
$water = imagecreatefromgif($water);
/*使用Inagecopy函数复制水印图片到指定位置*/
imagecopy($back, $water, $posX, $posY, 0, 0, $w_w, $w_h);
/*保存带水印的图片和命名*/
imagepng($back,'test2.png');
/*释放资源*/
imagedestroy($back);
imagedestroy($water);
}

/*调用函数*/
watermark('1.png','test.gif');
?>


加上水印


PHP图像操作教程:3D图、缩放、旋转、裁剪、添加水印_PHP教程

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/928040.htmlTechArticlePHP图像操作教程:3D图、缩放、旋转、裁剪、添加水印 图片操作在网站的应用相当广范,特别是现在互联网高度发达,很多内容都是以图片...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn