代码如下 | 复制代码 |
<?php $imagedraw = new imagick(); $pixel = new imagickpixel('gray'); $pixel->setcolor('black'); $imagedraw->newimage(100, 75, $pixel); $draw = new imagickdraw(); $draw->setfont('bookman-demiitalic'); $draw->setfontsize(12); $image=new imagick(); $animation = new imagick(); $animation->setformat( "gif" ); $image->readimage("old.gif"); $unitl = $image->getimageindex(); $image->writeimages('animation.gif',false); $delay = $image->getimagedelay(); $filename = 'animation-'; for ($i=0; $i<$unitl; $i++) { $thisimage = new imagick(); $thisimage->readimage($filename.$i.'.gif'); $thisimage->annotateimage($draw, 0, 12, 0, 'copyright by mpeg'); $animation->addimage($thisimage); $animation->setimagedelay($delay); } header("content-type: image/gif"); echo $animation->getimagesblob(); ?> |
imagemagick功能的php扩展。使用这个扩展可以使php具备和imagemagick相同的功能。 imagemagick是一套功能强大、稳定而且免费的工具集和开发包,可以用来读、写和处理超过185种基本格式的图片文件,包括流行的tiff, jpeg, gif, png, pdf以及photocd等格式。利用imagemagick,你可以根据web应用程序的需要动态生成图片, 还可以对一个(或一组)图片进行改变大小、旋转、锐化、减色或增加特效等操作,并将操作的结果以相同格式或其它格式保存。
组件下载地址
http://pecl.php.net/package/imagick
http://www.imagemagick.org
imagemagic官方去除图片背景的命令行模式:
代码如下 | 复制代码 |
convert -size 140x80 xc:none -fill grey -gravity northwest -draw "text 10,10 'copyright'" -gravity southeast -draw "text 5,15 'copyright'" miff:- | composite -tile - logo.jpg wmark_text_tiled.jpg |
imagick代码:
代码如下 | 复制代码 |
<?php $image = new imagick('logo.jpg'); $im = new imagick(); $im->newimage( 140, 80, new imagickpixel( "none" ) ); $draw = new imagickdraw(); $draw->setfillcolor(new imagickpixel( "grey" )); $draw->setgravity(imagick::gravity_northwest); $draw->annotation(10,10 ,'copyright'); $draw->setgravity(imagick::gravity_southeast); $draw->annotation(5,15 ,'copyright'); $im->drawimage( $draw); $image = $image->textureimage($im); $image->compositeimage($image,imagick::composite_copy,0,0); header( "content-type: image/{$image->getimageformat()}" ); $image->writeimage('wmark_text_tiled.jpg'); $image->clear(); $image->destroy(); ?> |
如果你的机型还没装php_imagick就下载吧,下载地址如下
http://pecl.php.net/package/imagick
一款php 验证码程序函数,原理是利用php gd库再生成随便数字,然后创建一个session与一张数字图片,就成了图形验证码了。代码如下 | 复制代码 |
function fun_code($sessionname) { header("content-type:image/png"); session_start(); $authnum_session = ''; //$str = 'abcdefghijkmnpqrstuvwxyz1234567890'; $str = '1234567890'; $l = strlen($str); for($i=1;$i<=4;$i++) { $num=rand(0,$l-1); $authnum_session.= $str[$num]; } $_session[$sessionname]=$authnum_session; srand((double)microtime()*1000000); $im = imagecreate(50,20); $black = imagecolorallocate($im, 0,0,0); $white = imagecolorallocate($im, 255,255,255); $gray = imagecolorallocate($im, 200,200,200); imagefill($im,68,30,$gray); for($i=0;$i<3;$i++) { imageline($im,rand(0,30),rand(0,21),rand(20,40),rand(0,21),$li); } imagestring($im, 5, 8, 2, $authnum_session, $white); for($i=0;$i<90;$i++) { imagesetpixel($im, rand()%70 , rand()%30 , $gray); } imagepng($im); imagedestroy($im); } echo fun_code("code"); |
代码如下 | 复制代码 |
$ch_str="你要生成中文验证码汉字"; for($i=0;$i<$line_num;$i++) //生成中文验证码二 imagettftext($im, rand(28,32), rand(0,70), rand(25,27), rand(70,100), $font_color, $fnt, $str2); //把汉字放在数组 $randcode=array('宠'); //gb2312转utf8
if($utf8!="") //unicode转utf8
$str.=(0x80|$c>>6&0x3f); //生成附加码 //加入杂点 $font_face="simkai.ttf"; //字体 |
// 使用的时候直接用html语法:<img" width=100% src="excode.php">调用就可以了,在服务端做验证时取session存储的验证字符与用户提交的字符进行比较,相同则通过验证
使用ImageCreate()创建一个代表空白图像的变量,这个函数要求以像素为单位的图像大小的参数,其格式是ImageCreate(x_size, y_size)。如果要创建一个大小为250×250的图像,就可以使用下面的语句:<? header ("content-type: image/png");
代码如下 | 复制代码 |
$newimg = imagecreate(250,250); |
由于图像还是空白的,因此你可能会希望用一些彩色来填充它。你需要首先使用imagecolorallocate()函数用其rgb值为这种颜色指定一个名字,这一函数的格式为imagecolorallocate([image], [red], [green], [blue])。如果要定义天蓝色,可以使用如下的语句:
代码如下 | 复制代码 |
$skyblue = imagecolorallocate($newimg,136,193,255); |
接下来,需要使用imagefill()函数用这种颜色填充这个图像,imagefill()函数有几个版本,例如imagefillrectangle()、imagefillpolygon()等。为简单起见,我们通过如下的格式使用imagefill()函数:
代码如下 | 复制代码 |
imagefill([image], [start x point], [start y point], [color]) imagefill($newimg,0,0,$skyblue); |
最后,在图像建立后释放图像句柄和所占用的内存:
代码如下 | 复制代码 |
imagepng($newimg); imagedestroy($newimg); ?> |
这样,创建图像的全部代码如下所示:
php教程代码:
代码如下 | 复制代码 |
<? header ("content-type: image/png"); $newimg = imagecreate(250,250); $skyblue = imagecolorallocate($newimg,136,193,255); imagefill($newimg,0,0,$skyblue); imagepng($newimg); imagedestroy($newimg); ?> |