PHP利用GD库处理图片方法实现

这里写的是完成每个功能的函数,可以复制单个函数直接使用,这里的每个函数都是另外一篇PHP常用类------图片处理类Image当中的方法进行细化,可以参考一下

废话不多说,直接付代码吧!

添加水印(文字和图片)

<?php
/**
 * [创建图片文字水印]
 * @param  [string] $imagename [需要添加水印的值]
 * @param  [string] $string    [图片上添加的文字]
 * @param  [string] $locate    [水印位置,center,left_buttom,right_buttom三选一]
 * @return [null]            [description]
 */
function create_words_watermark($imagename,$string,$locate){
	list($width,$height,$type)=getimagesize($imagename);
	$types=array(1 => "GIF",2 => "JPEG",3 => "PNG",
		4 => "SWF",5 => "PSD",6 => "BMP",
		7 => "TIFF",8 => "TIFF",9 => "JPC",
		10 => "JP2",11 => "JPX",12 => "JB2",
		13 => "SWC",14 => "IFF",15 => "WBMP",16 => "XBM");
	$type=strtolower($types[$type]);
	$create="imagecreatefrom".$type;
	$img=$create($imagename);

	$string_color=imagecolorallocate($img,200, 200, 200);
	$fontsize=4;

	// 图片的宽和高也可用下面两个函数获得
	// $width=imagesx($img);
	// $height=imagesy($img);

	switch($locate){
		case ‘center‘:
			$x=($width-imagefontwidth($fontsize)*strlen($string))/2;
			$y=($height-imagefontheight($fontsize))/2;
			break;
		case ‘left_buttom‘:
			$x=5;
			$y=($height-imagefontheight($fontsize)-3);
			break;
		case ‘right_buttom‘:
			$x=($width-imagefontwidth($fontsize)*strlen($string)-3);
			$y=($height-imagefontheight($fontsize)-3);
 			break;
 		default:
 			die("未指定水印位置!");
 			break;
 	}

	imagestring($img,$fontsize,$x,$y,$string,$string_color);
	imagestring($img,$fontsize,$x+1,$y+1,$string,$string_color);

	$save="image".$type;
	//保存
	//$save($img,"new_".$imagename);

	//显示
	header("content-type:image/".$type);
	$save($img);
	imagedestroy($img);
}

// create_words_watermark("test.png","hello world","right_buttom");

/**
 * [create_pic_watermark 添加图片水印]
 * @param  [string] $dest_image [需要添加图片水印的图片名]
 * @param  [string] $watermark  [水印图片名]
 * @param  [string] $locate     [水印位置,center,left_buttom,right_buttom三选一]
 * @return [type]             [description]
 */
function create_pic_watermark($dest_image,$watermark,$locate){
	list($dwidth,$dheight,$dtype)=getimagesize($dest_image);
	list($wwidth,$wheight,$wtype)=getimagesize($watermark);

	$types=array(1 => "GIF",2 => "JPEG",3 => "PNG",
		4 => "SWF",5 => "PSD",6 => "BMP",
		7 => "TIFF",8 => "TIFF",9 => "JPC",
		10 => "JP2",11 => "JPX",12 => "JB2",
		13 => "SWC",14 => "IFF",15 => "WBMP",16 => "XBM");

	$dtype=strtolower($types[$dtype]);//原图类型
	$wtype=strtolower($types[$wtype]);//水印图片类型

	$created="imagecreatefrom".$dtype;
	$createw="imagecreatefrom".$wtype;

	$imgd=$created($dest_image);
	$imgw=$createw($watermark);

	switch($locate){
		case ‘center‘:
			$x=($dwidth-$wwidth)/2;
			$y=($dheight-$wheight)/2;
			break;
		case ‘left_buttom‘:
			$x=1;
			$y=($dheight-$wheight-2);
			break;
		case ‘right_buttom‘:
			$x=($dwidth-$wwidth-1);
			$y=($dheight-$wheight-2);
 			break;
 		default:
 			die("未指定水印位置!");
 			break;
 	}

 	imagecopy($imgd,$imgw,$x,$y,0,0, $wwidth,$wheight);

 	$save="image".$dtype;

 	//显示
 	header("content-type:image/".$dtype);
 	$save($imgd);

 	imagedestroy($imgw);
 	imagedestroy($imgd);
}

create_pic_watermark("ganlixin.jpg","test.png","left_buttom");
?>

剪切图片

<?php
/**
 * [cut_image]					从原图中剪切一部分
 * @param  [string] $old_imagename [需要剪切的图片名]
 * @param  [int] $start_width   [从原图片宽为的$start_width开始剪切]
 * @param  [int] $start_height  [从原图片高为的$start_height开始剪切]
 * @param  [int] $new_width     [从原图片中剪切$new_width的宽度]
 * @param  [int] $new_height    [从原图片中剪切$new_height的高度]
 * @return [null]                [null]
 */
function cut_image($old_imagename,$start_width,$start_height,$new_width,$new_height){
	list($old_width,$old_height,$type)=getimagesize($old_imagename);
	$types=array(1 => "GIF",2 => "JPEG",3 => "PNG",
		4 => "SWF",5 => "PSD",6 => "BMP",
		7 => "TIFF",8 => "TIFF",9 => "JPC",
		10 => "JP2",11 => "JPX",12 => "JB2",
		13 => "SWC",14 => "IFF",15 => "WBMP",16 => "XBM");
	$type=strtolower($types[$type]);
	$create="imagecreatefrom".$type;

	$old_img=$create($old_imagename);
	$new_img=imagecreatetruecolor($new_width, $new_height);

	imagecopyresampled($new_img,$old_img,0,0,$start_width,$start_height,$new_width,$new_height,$new_width,$new_height);
	$save="image".$type;

	//保存
	//$save($new_img,"new_".$old_imagename);

	//显示
	header("content-type:image/".$type);
	$save($new_img);

	//销毁
	imagedestroy($old_img);
	imagedestroy($new_img);
}

cut_image("ganlixin.jpg",0,0,200,200);
?>

  

翻转图片

<?php
/**
 * [rotate_image 图片旋转]
 * @param  [string] $imagename [要进行旋转的图片名]
 * @param  [string] $angle     [旋转的角度,逆时针为正]
 * @return [null]            [description]
 */
function rotate_image($imagename,$angle){
	list($width,$height,$type)=getimagesize($imagename);
	$types=array(1 => "GIF",2 => "JPEG",3 => "PNG",
		4 => "SWF",5 => "PSD",6 => "BMP",
		7 => "TIFF",8 => "TIFF",9 => "JPC",
		10 => "JP2",11 => "JPX",12 => "JB2",
		13 => "SWC",14 => "IFF",15 => "WBMP",16 => "XBM");
	$type=$types[$type];

	$create="imagecreatefrom".$type;
	$img=$create($imagename);
	$new_img=imagerotate($img,$angle,0);
	$save="image".$type;

	//显示
	header("content-type:image/".$type);
	$save($new_img);

	// 保存
	// $save($new_img,"new_".$imagename);

	imagedestroy($img);
	imagedestroy($new_img);
} 

rotate_image("ganlixin.jpg",-90);

?>

  

翻转图片

<?php
/**
 * [overturn_image 翻转图片]
 * @param  [string] $imagename [要反转的图片名]
 * @param  [char] $method    [按x轴或y轴翻转,只有x,y选项]
 * @return [type]            [description]
 */
function overturn_image($imagename,$method){
	$method=strtolower($method);
	list($width,$height,$type)=getimagesize($imagename);
	$types=array(1 => "GIF",2 => "JPEG",3 => "PNG",
		4 => "SWF",5 => "PSD",6 => "BMP",
		7 => "TIFF",8 => "TIFF",9 => "JPC",
		10 => "JP2",11 => "JPX",12 => "JB2",
		13 => "SWC",14 => "IFF",15 => "WBMP",16 => "XBM");
	$type=$types[$type];

	$create="imagecreatefrom".$type;
	$img=$create($imagename);//源图片
	$new_img=imagecreatetruecolor($width,$height);//翻转之后的图片

	if($method==‘y‘){
		for($i=0;$i<$width;$i++){
			imagecopy($new_img,$img,$width-$i-1,0,$i,0,1,$height);
		}
	} else if($method==‘x‘){
		for($i=0;$i<$height;$i++){
			imagecopy($new_img,$img,0,$height-$i-1,0,$i,$width,1);
		}
	}
	$save="image".$type;

	//显示
	header("content-type:image/".$type);
	$save($new_img);

	// 保存
	// $save($new_img,"new_".$imagename);

	imagedestroy($img);
	imagedestroy($new_img);
}
overturn_image("ganlixin.jpg","y");
?>

  

时间: 2024-08-06 11:33:41

PHP利用GD库处理图片方法实现的相关文章

php学习笔记:利用gd库生成图片,并实现随机验证码

说明:一些基本的代码我都进行了注释,这里实现的验证码位数.需要用的字符串都可以再设置.有我的注释,大家应该很容易能看得懂. 基本思路: 1.用mt_rand()随机生成数字确定需要获取的字符串,对字符串进行拼接(觉得生成的验证码觉得有点太挤,大家可以再字符串中间拼接个空格键),实现随机验证码: 备注:建议大家用mt_rand(),而不是rand(),前者效率更高 2.利用gd库生成图片,把随机字符串写到图片输出. 效果: 每次刷新,都生成一个随机验证,后期我可能还会补充怎么实现随机码点击图片就再

GD库imagecopyresampled()方法详解~

整理了一下GD库这个缩放,拉伸复制的方法 因为这个函数参数太多了~ imagecopyresampled()   /* //拷贝部分图像并调整大小 bool imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h ) $d

PHP利用GD库画图和生成验证码图片

首先得确定php.ini设置有没有打开GD扩展功能,测试如下 print_r(gd_info()); 如果有打印出内容如下,则说明GD功能有打开: Array ( [GD Version] => bundled (2.0.34 compatible) [FreeType Support] => 1 [FreeType Linkage] => with freetype [T1Lib Support] => 1 [GIF Read Support] => 1 [GIF Crea

PHP利用GD库绘图和生成验证码图片

首先得确定php.ini设置有没有打开GD扩展功能,測试例如以下 print_r(gd_info()); 假设有打印出内容例如以下,则说明GD功能有打开: Array ( [GD Version] => bundled (2.0.34 compatible) [FreeType Support] => 1 [FreeType Linkage] => with freetype [T1Lib Support] => 1 [GIF Read Support] => 1 [GIF

PHP学习笔记:利用gd库给图片打图片水印

<?php $dst_path = '1.jpg';//目标图片 $src_path = 'logo1.png';//水印图片 //创建图片的实例 $dst = imagecreatefromstring(file_get_contents($dst_path)); $src = imagecreatefromstring(file_get_contents($src_path)); //获取水印图片的宽高 list($src_w, $src_h) = getimagesize($src_pat

php中GD库(转)

"php中GD库的一些简单使用":关键词:php 中 gd 库 一些 简单 使用 今天了解了一些gd库的简单使用,现在稍微做一下总结! gd库是什么?,graphic device,图像工具 库,gd库是php处理图形的扩展库,gd库提供了一系列用来处理图片的api,使用gd库可以处理图片,或者生成图片. 在网站上 gd库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表 . php并不局限于输出html文本.php通过使用gd扩展库还能用来动态输出图像,例如文字按钮.验证码

PHP系列(十)GD库

GD库 1.Php中gd库的使用 Gd库是一个画图或处理有图片的函数库 2.使用gd库画图 GD库图像绘制的步骤 在PHP中创建一个图像应该完成如下所示的4个步骤: 1.创建一个背景图像(也叫画布),以后的操作都基于此背景图像. 2.在背景上绘制图像轮廓或输入文本. 3.输出最终图形 4.释放资源 代码: <?php //1. 创建画布 $im = imageCreateTrueColor(200, 200); //建立空白画布背景 $white = imageColorAllocate($im

php中GD库的一些简单使用

今天了解了一些GD库的简单使用,现在稍微做一下总结! GD库是什么?,graphic device,图像工具库,gd库是php处理图形的扩展库,gd库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片. 在网站上 GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表. php并不局限于输出HTML文本.php通过使用GD扩展库还能用来动态输出图像,例如文字按钮.验证码.数据统计图等.哈可以轻松地编辑图像,力图处理缩略图和为图片添加水印等,具有强大的图像处理能力.

PHP学习笔记-GD库与Jpgraph的使用

转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/52281196 本文出自:[顾林海的博客] 前言 学习PHP从第一篇笔记到现在这篇,已经十多篇了,每天花时间去学习是需要毅力的,好在自己对IT这行也是比较感兴趣,算是每天自娱自乐吧,下周一就去考科目三了,想想也是醉了,拖这么长时间. GD库 GD库是一个开放的动态创建图像.源代码公开的函数库,可以从官方网站http://www.boutell.com/gd处下载.目前,