图片压缩处理

  1. 作者QQ:67065435 QQ群:821635552

  2. 注意

     # 要启用gd扩展库并启用以下支持
     jpg,png,gif,wbmp,webp
    
  3. 图片缩放为360x480

    <?php
    //缩放后的宽高
    $width = 360;
    $height = 480;
    
    //获取背景图指针
    $dst_resource = imagecreatetruecolor($width, $height);
    
    //要缩放的图片
    $img_path = __DIR__ . '/image.jpg';
    //获取要缩放图片属性
    $img_size = getimagesize($img_path);
    //根据要缩放图片mime类型获取要缩放图片指针
    if (strstr($img_size['mime'], 'jpg') || strstr($img_size['mime'], 'jpeg')) {
        $img_resource = imagecreatefromjpeg($img_path);
    } elseif (strstr($img_size['mime'], 'png')){
        $img_resource = imagecreatefrompng($img_path);
    } elseif (strstr($img_size['mime'], 'gif')){
        $img_resource = imagecreatefromgif($img_path);
    } elseif (strstr($img_size['mime'], 'wbmp')){
        $img_resource = imagecreatefromwbmp($img_path);
    } else {
        $img_resource = imagecreatefromjpeg($img_path);
    }
    
    //把要缩放图片缩放到背景图上覆盖
    imagecopyresampled($dst_resource, $img_resource, 0, 0, 0, 0, $width, $height, $img_size[0], $img_size[1]);
    
    if(要返回图片buffer){
        ob_start();
        imagejpeg($dst_resource, null, 100);
        $img_buffer = ob_get_contents();
        ob_end_clean();
        imagedestroy($img_resource);
        imagedestroy($dst_resource);
        return $img_buffer;
    } elseif (要保存图片) {
        $save_path = __DIR__ . '/image.jpg';
        imagejpeg($dst_resource, $save_path, 100);
        imagedestroy($img_resource);
        imagedestroy($dst_resource);
        return true;
    }
    
  4. 图片缩放为360x480添加文字水印

    <?php
    //缩放后的宽高
    $width = 360;
    $height = 480;
    
    //获取背景图指针
    $dst_resource = imagecreatetruecolor($width, $height);
    
    //要缩放的图片
    $img_path = __DIR__ . '/image.jpg';
    //获取要缩放图片属性
    $img_size = getimagesize($img_path);
    //根据要缩放图片mime类型获取要缩放图片指针
    if (strstr($img_size['mime'], 'jpg') || strstr($img_size['mime'], 'jpeg')) {
        $img_resource = imagecreatefromjpeg($img_path);
    } elseif (strstr($img_size['mime'], 'png')){
        $img_resource = imagecreatefrompng($img_path);
    } elseif (strstr($img_size['mime'], 'gif')){
        $img_resource = imagecreatefromgif($img_path);
    } elseif (strstr($img_size['mime'], 'wbmp')){
        $img_resource = imagecreatefromwbmp($img_path);
    } else {
        $img_resource = imagecreatefromjpeg($img_path);
    }
    
    //把要缩放图片缩放到背景图上覆盖
    imagecopyresampled($dst_resource, $img_resource, 0, 0, 0, 0, $width, $height, $img_size[0], $img_size[1]);
    
    //获取文字水印指针
    $r = 0;//红0-255
    $g = 0;//绿0-255
    $b = 0;//蓝0-255
    $a = 0;//透0-127(越大越透明)
    $angle = 0;//角度
    $font_x = 0;//横坐标
    $font_y = 16;//纵坐标
    $font_size = 16;//字号
    $content = '文字';//内容
    //文字水印宽度
    $content_width = mb_strlen($content) * $font_size;
    //文字水印高度
    $content_height = $font_size;
    $font_path = __DIR__ . '/ncover.ttf';//中文字体文件
    //获取文字水印指针
    $fgr_resource = imagecreatetruecolor($content_width,$content_height);
    //设置水印文字属性(颜色、透明度)
    $color = imagecolorallocatealpha($fgr_resource, $r, $g, $b, $a);
    //将文字水印放到背景图当中
    imagettftext($dst_resource, $font_size, $angle, $font_x, $font_y, $color, $font_path, $content);
    
    if(要返回图片buffer){
        ob_start();
        imagejpeg($dst_resource, null, 100);
        $img_buffer = ob_get_contents();
        ob_end_clean();
        imagedestroy($img_resource);
        imagedestroy($dst_resource);
        return $img_buffer;
    } elseif (要保存图片) {
        $save_path = __DIR__ . '/image.jpg';
        imagejpeg($dst_resource, $save_path, 100);
        $img_buffer = ob_get_contents();
        imagedestroy($img_resource);
        imagedestroy($dst_resource);
        return true;
    }
    
  5. imagecreatefromjpeg 同功能函数

     # 创建指定格式画布
     imagecreatefrompng
     imagecreatefromgif
     imagecreatefromwbmp
     imagecreatefromwebp
    
  6. imagecopyresampled 参数说明

     # 左上角为坐标原点(0,0)向右为x正坐标,向下为y正坐标
     imagecopyresampled($dst_resource, $img_resource, $new_x, $new_y, $old_x, $old_y, $new_width, $new_height, $old_width, $old_height);
    
     $dst_resource: 背景图资源
     $img_resource: 水印图资源
     $new_x:        水印图新的横位移
     $new_y:        水印图新的纵位移
     $old_x:        水印图原本横位移
     $old_y:        水印图原本纵位移
     $new_width:    水印图新的宽度
     $new_height:   水印图新的高度
     $old_width:    水印图原本宽度
     $old_height:   水印图原本高度
    
     # $new_x $new_y 决定水印图相对背景图左上角的位置
     # $old_x $old_y 决定水印图原本的左上角的原点定位
     # $new_width $new_height 用来缩放水印图现在的长宽
     # $old_width $old_height 用来声明水印图原本的长宽
    
  7. imagejpeg 同功能函数

     imagepng(没有图片清晰度参数)
     imagegif
     imagewbmp
     imagewebp
    
  8. imagedestroy释放资源

Copyright © 豆包嘿嘿~ 2012-∞ 冀ICP备17033181号 all right reserved,powered by Gitbook修订: 2012-12-31 12:00:00

results matching ""

    No results matching ""