AI智能
改变未来

PHP 图片处理

图片处理函数功能:缩放、剪切、相框、水印、锐化、旋转、翻转、透明度、反色处理并保存历史记录的思路:当有图片有改动时自动生成一张新图片

1、转Base64编码

/*** 获取图片的Base64编码(不支持url)* @param $img_file 传入本地图片地址* @return string*/function imgToBase64($img_file) {$img_base64 = \'\';if (file_exists($img_file)) {$app_img_file = $img_file; // 图片路径$img_info = getimagesize($app_img_file); // 取得图片的大小,类型等//echo \'<pre>\' . print_r($img_info, true) . \'</pre><br>\';list($width, $height, $type, $attr) = getimagesize($app_img_file);$fp = fopen($app_img_file, \"r\"); // 图片是否可读权限if ($fp) {$filesize = filesize($app_img_file);$content = fread($fp, $filesize);$file_content = chunk_split(base64_encode($content)); // base64编码switch ($type) {   //判读图片类型case 1: $img_type = \"gif\";break;case 2: $img_type = \"jpg\";break;case 3: $img_type = \"png\";break;}$img_base64 = \'data:image/png;base64,\' . $file_content;//合成图片的base64编码}fclose($fp);}else{return $img_file;}return $img_base64; //返回图片的base64}

2、图片旋转

/*** 图片旋转* @param $src 图片地址* @param $direction 1顺时针90 2 逆时针90* @return string*/function imgturn($src, $direction = 1){$ext = pathinfo($src)[\'extension\'];switch ($ext) {case \'gif\':$img = imagecreatefromgif($src);break;case \'jpg\':case \'jpeg\':$img = imagecreatefromjpeg($src);break;case \'png\':$img = imagecreatefrompng($src);break;default:die(\'图片格式错误!\');break;}$width = imagesx($img);$height = imagesy($img);$img2 = imagecreatetruecolor($height, $width);//顺时针旋转90度if($direction == 1){for ($x = 0; $x < $width; $x++) {for($y=0; $y<$height; $y++) {imagecopy($img2, $img, $height - 1 - $y, $x, $x, $y, 1, 1);}}}else if($direction == 2) {//逆时针旋转90度for ($x = 0; $x < $height; $x++) {for($y = 0; $y < $width; $y++) {imagecopy($img2, $img, $x, $y, $width - 1 - $y, $x, 1, 1);}}}switch ($ext) {case \'jpg\':case \"jpeg\":imagejpeg($img2, $src, 100);break;case \"gif\":imagegif($img2, $src, 100);break;case \"png\":imagepng($img2, $src, 100);break;default:die(\'图片格式错误!\');break;}imagedestroy($img);imagedestroy($img2);}

3、图片压缩

/*** 图片压缩处理* @param string $sFile 源图片路径* @param int $iWidth 自定义图片宽度* @param int $iHeight 自定义图片高度* @return string 压缩后的图片路径*/function getThumb($sFile, $iWidth, $iHeight){//图片公共路径$public_path = \'\';//判断该图片是否存在if(!file_exists($public_path . $sFile)) return $sFile;list($width, $height, $type, $attr) = getimagesize($sFile);if($width < $height){imgturn($sFile, 2);}//判断图片格式(图片文件后缀)$extend = explode(\".\" , $sFile);$attach_fileext = strtolower($extend[count($extend) - 1]);if (!in_array($attach_fileext, array(\'jpg\',\'png\',\'jpeg\'))){return \'\';}//压缩图片文件名称$sFileNameS = str_replace(\".\" . $attach_fileext, \"_\" . $iWidth . \'_\' . $iHeight . \'.\' . $attach_fileext, $sFile);//判断是否已压缩图片,若是则返回压缩图片路径if(file_exists($public_path . $sFileNameS)){return $sFileNameS;}//生成压缩图片,并存储到原图同路径下resizeImage($public_path . $sFile, $public_path . $sFileNameS, $iWidth, $iHeight);if(!file_exists($public_path . $sFileNameS)){return $sFile;}return $sFileNameS;}

4、生成目标图片

/*** 生成图片* @param string $im 源图片路径* @param string $dest 目标图片路径* @param int $maxwidth 生成图片宽* @param int $maxheight 生成图片高*/function resizeImage($im, $dest, $maxwidth, $maxheight) {$img = getimagesize($im);switch ($img[2]) {case 1:$im = @imagecreatefromgif($im);break;case 2:$im = @imagecreatefromjpeg($im);break;case 3:$im = @imagecreatefrompng($im);break;}$pic_width = imagesx($im);$pic_height = imagesy($im);$resizewidth_tag = false;$resizeheight_tag = false;if (($maxwidth && $pic_width > $maxwidth) || ($maxheight && $pic_height > $maxheight)) {if ($maxwidth && $pic_width > $maxwidth) {$widthratio = $maxwidth / $pic_width;$resizewidth_tag = true;}if ($maxheight && $pic_height > $maxheight) {$heightratio = $maxheight / $pic_height;$resizeheight_tag = true;}if ($resizewidth_tag && $resizeheight_tag) {if ($widthratio < $heightratio){$ratio = $widthratio;}else{$ratio = $heightratio;}}if ($resizewidth_tag && !$resizeheight_tag){$ratio = $widthratio;}if ($resizeheight_tag && !$resizewidth_tag){$ratio = $heightratio;}$newwidth = $pic_width * $ratio;$newheight = $pic_height * $ratio;if (function_exists(\"imagecopyresampled\")) {$newim = imagecreatetruecolor($newwidth, $newheight);imagecopyresampled($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $pic_width, $pic_height);} else {$newim = imagecreate($newwidth, $newheight);imagecopyresized($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $pic_width, $pic_height);}imagejpeg($newim, $dest);imagedestroy($newim);} else {imagejpeg($im, $dest);}}

以上就是PHP对图片的处理的详细内容,更多关于PHP 图片处理的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:

  • php实现图片压缩处理
  • PHP+ajax实现上传、删除、修改单张图片及后台处理逻辑操作详解
  • php使用高斯算法实现图片的模糊处理功能示例
  • php封装的图片(缩略图)处理类完整实例
  • 分享php多功能图片处理类
  • php常用图片处理类
  • 功能强大的PHP图片处理类(水印、透明度、旋转)
  • php+curl 发送图片处理代码分享
  • 常用的php图片处理类(水印、等比缩放、固定高宽)分享
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » PHP 图片处理