php图片缩放裁剪与水印代码
代码语言:php
所属分类:图片处理
代码描述:php图片缩放裁剪与水印代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<?php /** * 图片裁剪 * @param string $picname 原图路径 * @param string $x $Y 裁剪开区域左上角的点的坐标 * @param string $width 裁剪宽度 * @param string $height 裁剪高度 * @param string $pre 处理后图片名的前缀名 * @return String 返回后的图片名称(带路径),如a.jpg=>n_a.jpg */ function crop($picname, $width, $height, $x = 0, $y = 0, $pre = "n_") { $picnameinfo = getimageSize($picname); //获取图片源的基本信息 //创建源图的实例 $src = imagecreatefromstring(file_get_contents($picname)); //裁剪开区域左上角的点的坐标 $x = 100; $y = 12; //裁剪区域的宽和高 $width = 200; $height = 400; //最终保存成图片的宽和高,和源要等比例,否则会变形 $final_width = 100; $final_height = round($final_width * $height / $width); //将裁剪区域复制到新图片上,并根据源和目标的宽高进行缩放或者拉升 $new_image = imagecreatetruecolor($final_width, $final_height); imagecopyresampled($new_image, $src, 0, 0, $x, $y, $final_width, $final_height, $width, $height); //输出图像(根据源图像的类型,输出为对应的类型) $picinfo = pathinfo($picname); //解析源图像的名字和路径信息 $newpicname = $picinfo["dirname"]."/".$pre.$picinfo["basename"]; switch ($picnameinfo[2]) { case 1: imagegif($new_image, $newpicname); break; case 2: imagejpeg($new_image, $newpicname); break; case 3: imagepng($new_image, $newpicname); break; } //释放图片资源 imagedestroy($src); imagedestroy($new_image); return $newpicname; } /** * 为一张图片添加上一个logo图片水印(以保存的方式实现) * @param string $picname 被处理图片源 * @param string $logo 水印图片 * @param string $pre 处理后图片名的前缀名 * @return String 返回后的图片名称(带路径),如a.jpg=>n_a.jpg */ function watermark($picname, $logo, $pre = "n_") { $picnameinfo = getimageSize($picname); //获取图片源的基本信息 $logoinfo = getimageSize($logo); //获取logo图片的基本信息 //var_dump($logoinfo); //根据图片类型创建出对应的图片源 switch ($picnameinfo[2]) { case 1: //gif $im = imagecreatefromgif($picname); break; case 2: //jpg $im = imagecreatefromjpeg($picname); break; case 3: //png $im = imagecreatefrompng($picname); break; default: die("图片类型错误!"); } //根据logo图片类型创建出对应的图片源 switch ($logoinfo[2]) { case 1: //gif $logoim = imagecreatefromgif($logo); break; case 2: //jpg $logoim = imagecreatefromjpeg($logo); break; case 3: //png $logoim = imagecreatefrompng($logo); break; default: die("logo图片类型错误!"); } //执行图片水印处理 imagecopyresampled($im, $logoim, $picnameinfo[0]-$logoinfo[0], $picnameinfo[1]-$logoinfo[1], 0, 0, $logoinfo[0], $logoinfo[1], $logoinfo[0], $logoinfo[1]); //输出图像(根据源图像的类型,输出为对应的类型) $picinfo = pathinfo($picname); //解析源图像的名字和路径信息 $newpicname = $picinfo["dirname"]."/".$pre.$picinfo["basename"]; switch ($picnameinfo[2]) { case 1: imagegif($im, $newpicname); break; case 2: imagejpeg($im, $newpicname); break; case 3: imagepng($im, $newpicname); break; } //释放图片资源 imagedestroy($im); imagedestroy($logoim); //返回结果 return $newpicname; } /** * 图片裁剪函数,支持指定定点裁剪和方位裁剪两种裁剪模式 * @param $src_file 原图片路径 * @param $new_width 裁剪后图片宽度(当宽度超过原图片宽度时,取原图片宽度) * @param $new_height 裁剪后图片高度(当宽度超过原图片宽度时,取原图片高度) * @param $type 裁剪方式,1-方位模式裁剪;0-定点模式裁剪。 * @param $pos 方位模式裁剪时的起始方位(当选定点模式裁剪时,此参数不起作用) * 1为顶端居左,2为顶端居中,3为顶端居右; * 4为中部居左,5为中部居中,6为中部居右; * 7为底端居左,8为底端居中,9为底端居右; * @param $start_x 起始位置X (当选定方位模式裁剪时,此参数不起作用) * @param $start_y 起始位置Y(当选定方位模式裁剪时,此参数不起作用) * @return 裁剪图片存储路径 */ function thumb($src_file, $new_width, $new_height, $type = 1, $pos = 5, $start_x = 0, $start_y = 0) { $pathinfo = pathinfo($src_file); $dst_file = $pathinfo['dirname'] . '/' . $pathinfo['filename'] .'_'. $new_width . 'x' . $new_height . '.' . $pathinfo['extension']; if (!file_exists($dst_file)) { if ($new_width < 1 || $new_height < 1) { echo "params width or height error !"; exit(); } if (!file_exists($src_file)) { echo $src_file . " is not exists !"; exit(); } // 图像类型 $img_type = exif_imagetype($src_file); $support_type = array(IMAGETYPE_JPEG, IMAGETYPE_PNG, IMAGETYPE_GIF); if (!in_array($img_type, $support_type, true)) { echo "只支持jpg、png、gif格式图片裁剪"; exit(); } /* 载入图像 */ switch ($img_type) { case IMAGETYPE_JPEG : $src_img = imagecreatefromjpeg($src_file); break; case IMAGETYPE_PNG : $src_img = imagecreatefrompng($src_file); break; case IMAGETYPE_GIF : $src_img = imagecreatefromgif($src_file); break; default: echo "载入图像错误!"; exit(); } /* 获取源图片的宽度和高度 */ .........完整代码请登录后点击上方下载按钮下载查看
网友评论0