• 技术文章 >php教程 >php手册

    PHP图片裁剪、缩放函数

    2016-06-13 09:41:18原创727
    根据自定义的目标图高宽, 按目标图高宽比裁剪、缩放源图.


    传入参数:
    $source_path string 源图路径
    $target_width integer 目标图宽度
    $target_height integer 目标图高度

    源图支持MIMETYPE: image/gif, image/jpeg, image/png.

    function imagecropper($source_path, $target_width, $target_height)
    {
    	$source_info   = getimagesize($source_path);
    	$source_width  = $source_info[0];
    	$source_height = $source_info[1];
    	$source_mime   = $source_info['mime'];
    	$source_ratio  = $source_height / $source_width;
    	$target_ratio  = $target_height / $target_width;
    
    	// 源图过高
    	if ($source_ratio > $target_ratio)
    	{
    		$cropped_width  = $source_width;
    		$cropped_height = $source_width * $target_ratio;
    		$source_x = 0;
    		$source_y = ($source_height - $cropped_height) / 2;
    	}
    	// 源图过宽
    	elseif ($source_ratio < $target_ratio)
    	{
    		$cropped_width  = $source_height / $target_ratio;
    		$cropped_height = $source_height;
    		$source_x = ($source_width - $cropped_width) / 2;
    		$source_y = 0;
    	}
    	// 源图适中
    	else
    	{
    		$cropped_width  = $source_width;
    		$cropped_height = $source_height;
    		$source_x = 0;
    		$source_y = 0;
    	}
    
    	switch ($source_mime)
    	{
    		case 'image/gif':
    			$source_image = imagecreatefromgif($source_path);
    			break;
    
    		case 'image/jpeg':
    			$source_image = imagecreatefromjpeg($source_path);
    			break;
    
    		case 'image/png':
    			$source_image = imagecreatefrompng($source_path);
    			break;
    
    		default:
    			return false;
    			break;
    	}
    
    	$target_image  = imagecreatetruecolor($target_width, $target_height);
    	$cropped_image = imagecreatetruecolor($cropped_width, $cropped_height);
    
    	// 裁剪
    	imagecopy($cropped_image, $source_image, 0, 0, $source_x, $source_y, $cropped_width, $cropped_height); 
    	// 缩放
    	imagecopyresampled($target_image, $cropped_image, 0, 0, 0, 0, $target_width, $target_height, $cropped_width, $cropped_height);
    
    	header('Content-Type: image/jpeg');
    	imagejpeg($target_image);
    	imagedestroy($source_image);
    	imagedestroy($target_image);
    	imagedestroy($cropped_image);
    }

    php入门到就业线上直播课:查看学习

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:PHP函数 图片 裁剪 缩放
    上一篇:PHP微信公众平台开发(一) 配置接口 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• mysql 数据备份类代码• php根据用户语言跳转相应网页• Xgcalendar 新增Php demo• PHP 采集程序原理分析篇• 用PHP向数据库中实现简单的增删改查(纯代码,待完善),php增删
    1/1

    PHP中文网