PHP 图片处理

吾爱主题 阅读:128 2021-10-26 15:10:00 评论:0

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

1、转Base64编码

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 /**   * 获取图片的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、图片旋转

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 /**   * 图片旋转   * @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、图片压缩

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 /** * 图片压缩处理 * @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、生成目标图片

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 /**   * 生成图片   * @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 图片处理的资料请关注服务器之家其它相关文章!

原文链接:https://www.myong.top/view/92

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容