首页 > 其他分享 >使用GD库实现图片处理工具函数

使用GD库实现图片处理工具函数

时间:2022-09-26 19:25:52浏览次数:52  
标签:src dist 函数 img echo GD clip options 图片

 

<?php 
 /* img_deal(String $file,String $save,Array $options)参数
    $file 用户上传文件的路径
    $save 保存的路径

    $options参数:
    - type 裁切(clip)或者是缩放(scale) 默认裁切

    - scale参数 (至少写一个参数)
      - scale_w 缩放后的宽度 (如果只设置其中一值则按原图比例缩放)
      - scale_h 缩放后的高度

    - clip参数 (全都得写)
      - clip_w 裁切后的宽度
      - clip_h 裁切后的高度
      - clip_x 裁切起点x坐标(以图片左上顶点为原点,向下y正方向,向右x正方向)
      - clip_y 裁切起点y坐标
 */
function img_deal($file,$save,$options){

    //上传的原图片
    $img_src = imagecreatefromjpeg($file);
    //原图片的宽高
    $src_w = imagesx($img_src);
    $src_h = imagesy($img_src);
    
    switch ($options['type']) {
        case 'scale':
            if(is_numeric($options['scale_w']) && is_numeric($options['scale_h'])){
                $dist_w = $options['scale_w'];
                $dist_h = $options['scale_h'];
            }elseif(is_numeric($options['scale_w'])){
                $dist_w = $options['scale_w'];
                $dist_h = $src_h*$dist_w/$src_w;
            }elseif(is_numeric($options['scale_h'])){
                $dist_h = $options['scale_h'];
                $dist_w = $src_w*$dist_h/$src_h;
            }else{
                echo 'Image deal is Failed<br>';
                return false;
            }
            //设置目标图片大小
            $img_dist = imagecreatetruecolor($dist_w,$dist_h);
            //图片进行处理
            imagecopyresampled($img_dist, $img_src, 0, 0, 0, 0, $dist_w, $dist_h, $src_w, $src_h);

            break;
        
        default:
            //设置目标图片大小
            $img_dist = imagecreatetruecolor($options['clip_w'],$options['clip_h']);
            $keys = array_keys($options);
            $str = implode($keys, ',');
            preg_match_all('/clip_/', $str, $matches);
            if(count($matches[0]) !== 4){
                echo 'Image deal is Failed<br>';
                return false;
            }

            //图片进行处理
            imagecopyresampled($img_dist, $img_src, 0, 0, $options['clip_x'], $options['clip_y'], $options['clip_w'], $options['clip_h'], $options['clip_w'], $options['clip_h']);
            
            break;
            
    }
    //将图片保存
    $status = imagejpeg($img_dist,$save);
    if($status){
        echo 'Image deal is Success<br>';
    }else{
        echo 'Image deal is Failed<br>';
    }
    //释放内存空间
    imagedestroy($img_dist);
    imagedestroy($img_src);

    //返回保存状态结果
    return $status;

}

?>

  

标签:src,dist,函数,img,echo,GD,clip,options,图片
From: https://www.cnblogs.com/shaoyunfeng93/p/16732051.html

相关文章

  • JavaScript手写函数
     //url的queryString转成对象functionqueryStr2Obj(url){constquery={};constsearch=url.split('?')[1];if(!search){return{}......
  • Oracle常用函数
    目录Oracle常用函数1、时间函数1.1、获取当月第一天1.2、当月最后一天2、切割函数substrOracle常用函数1、时间函数1.1、获取当月第一天selectto_char(trunc(add_mon......
  • 18. NumPy统计函数
    1.前言NumPy提供了许多统计功能的函数,比如查找数组元素的最值、百分位数、方差以及标准差等。2.numpy.amin()和numpy.amax()这两个函数用于计算数组沿指定轴的最......
  • 分治法求解幂函数
    #include<iostream>usingnamespacestd;floatpower(floatx,inty){floattemp;if(y==0)return1;temp=power(x,y/2);if(y%2==0)......
  • python-模块-模块导入之其它函数
    1.dir()dir()函数一个排好序的字符串列表,内容是一个模块里定义过的名字。返回的列表容纳了在一个模块里定义的所有模块,变量和函数1.1dir示例定义一个模块#coding-......
  • C++ 导入动态链接库DLL 中的函数
    C++导入动态链接库DLL中的函数声明头文件<windows.h>,利用windows库进行DLL的加载#include<windows.h>然后用typedef定义一个指针函数类型typedefvoid(**fun),这......
  • vue3中的hook自定义函数
    1.建立hook文件夹,在hook文件夹里面建立useAxios.ts文件,内容如下:import{ref}from'vue';importaxiosfrom'axios';exportdefaultfunction<T>(url:string,m......
  • 波函数坍缩算法
    https://www.bilibili.com/video/BV1k5411u7t7/?spm_id_from=333.788.top_right_bar_window_history.content.click&vd_source=426e9399caf4b3d209b6ac8487de530bhttps://......
  • python中实现days360函数
    #-*-coding:utf-8-*-"""CreatedonFriSep2320:42:582022@author:Administrator"""importtimeimportdatetimedefdays360(start_date,end_date,meth......
  • 15. NumPy字符串处理函数
    1.前言NumPy提供了许多字符串处理函数,它们被定义在用于处理字符串数组的numpy.char这个类中,这些函数的操作对象是string_或者unicode_字符串数组。如下表所示:Num......