PHP实现图像加水印裁剪处理组件代码

白菜网注册大全

2018-10-13

前置条件该组件需要满足以下条件才可以正常运行:PHP=需要支持Fileinfo扩展GD库或者Imagick扩展=安装使用composer安装:composerrequireintervention/image使用在使用InterventionImage的时候,你只需要给ImageManager传一个数组参数就可以完成GD或Imagick库之间的互相切换。

//引入composerautoloadrequirevendor///导入InterventionImageManagerClassuseIntervention\Image\ImageManager;//通过指定driver来创建一个imagemanager实例$manager=newImageManager(array(driver=imagick));//最后创建image实例$image=$manager-make(public/)-resize(300,200);另外你也可以使用ImageManager的静态版本,如下所示://引入composerautoloadrequirevendor///导入InterventionImageManagerClassuseIntervention\Image\ImageManagerStaticasImage;//通过指定driver来创建一个imagemanager实例(默认使用gd)Image::configure(array(driver=imagick));//最后创建image实例$image=Image::make(public/)-resize(300,200);调整尺寸当上传的图片尺寸不合适时,可以将图片重新调整尺寸。 1.调整图片为固定尺寸300x200像素:$img=Image::make(public/)$img-resize(300,200);仅调整图片宽度为300像素:$img-resize(300,null);仅调整图片高度为200像素:$img-resize(null,200);调整图片宽度为300像素,高度根据宽度等比例缩放:$img-resize(300,null,function($constraint){$constraint-aspectRatio();});调整图片高度为200像素,高度根据高度等比例缩放:$img-resize(null,200,function($constraint){$constraint-aspectRatio();});裁剪图片使用方法crop(int$width,int$height,[int$x,int$y])可以将图片裁剪成合适的尺寸。 $img=Image::make(public/$img-crop(100,100,25,25);以上代码将图片从坐标x:25,y:25开始裁剪成100x100像素大小的图片。 图片水印使用方法:insert(mixed$source,[string$position,[integer$x,integer$y]])可以给图片添加水印图片,方法中第一个参数是水印图片,第二个参数是水印的位置,支持9个位置,最后两个参数是水印的相对$position参数的位移。

要想给图片加个水印图标,可以参照以下代码://修改指定图片的大小$img=Image::make(images/)-resize(200,200);//插入水印,水印位置在原图片的右下角,距离下边距10像素,距离右边距15像素$img-insert(images/,bottom-right,15,10);//将处理后的图片重新保存到其他路径$img-save(images/new_/*上面的逻辑可以使用链式表达式*/$img=Image::make(images/)-resize(200,200)-insert(images/new_,bottom-right,15,10);这时你查看新生成的图片new_的右下角会有水印图标。 图片缓存要想缓存图片,先得安装另外一个组件:imagecache。

composerrequireintervention/imagecache我们使用方法cache(Closure$callback,[int$lifetime,[bool$returnObj]]),可以实现图片缓存功能。

第2个参数$lifetime是缓存时间,默认为5,单位分钟。 $img=Image::cache(function($image){$image-make(public/)-resize(300,200)-greyscale();},10,true);以上代码将图片重置大小为300x200,并且变成灰色,保存在缓冲区,缓存过期时间为10分钟。

图片根据URL参数动态处理大小当你上传一张图片后需要生成多种尺寸的图片,比如常见的头像尺寸就有多个尺寸以满足不同应用展示。

那么我们的解决办法有:1.上传时就生成裁剪好多种相应的尺寸,2.根据请求带参数的URL来生成不同尺寸的图片。 方法1有局限性,必须先设定尺寸,方法2比较靠谱,根据传递的参数,生成所需尺寸的图片,而且结合图片缓存功能,让生成的图片缓存起来,那么在缓存期限内,多次请求同一个URL是不会重复生成图片的。

以下是个简单的示例:phprequirevendor/\Image\ImageManagerStaticasImage;$s=isset($_GET[s])$_GET[s]:mediumswitch($s){casesmall://60x60px$imgName=public/$width=60;$height=60;break;casemedium://150x150$imgName=public/$width=150;$height=150;break;caselarge://300x300$imgName=public/$width=300;$height=300;break;default:$imgName=public/$width=150;$height=150;break;}$img=Image::cache(function($image)use($imgName,$width,$height){$image-make(public/)-resize($width,$height)-save($imgName);},600);//缓存:600minecho$imgName;。