PHP implements uploading cropped pictures

小云云
Release: 2023-03-22 10:12:01
Original
2994 people have browsed it

本文主要和大家分享PHP实现上传裁剪图片,主要以代码的形式和大家分享,希望能帮助到大家。

/ 图片裁剪上传
//        $source_path = 'E:\www\cylxsh\storage\app\\'.$url; // 原图路径
        $source_path = storage_path('app\\'.$url); // 原图路径
        $target_width = 1000; // 目标宽度
        $target_height = 100; // 目标高度
        $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 &#39;image/gif&#39;:
                $source_image = imagecreatefromgif($source_path);
                break;

            case &#39;image/jpeg&#39;:
                $source_image = imagecreatefromjpeg($source_path);
                break;

            case &#39;image/png&#39;:
                $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);
        // 设置随机的文件名
        $chars=null;
        $len = 50;
        if (is_null($chars)) {
            $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        }
        mt_srand(10000000*(double)microtime());
        for ($i = 0, $fileName = &#39;&#39;, $lc = strlen($chars)-1; $i < $len; $i++) {
            $fileName .= $chars[mt_rand(0, $lc)];
        }
        //保存图片到本地
        $res = imagepng($target_image,storage_path(&#39;\app\uploads\\&#39;.date(&#39;Y&#39;).&#39;\\&#39;.date(&#39;m&#39;).&#39;\\&#39;.date(&#39;d&#39;).&#39;\\&#39;.$fileName));
        if ($res == true){
            unlink(storage_path(&#39;app\\&#39;.$url));
            $url = storage_path(&#39;\app\uploads\\&#39;.date(&#39;Y&#39;).&#39;\\&#39;.date(&#39;m&#39;).&#39;\\&#39;.date(&#39;d&#39;).&#39;\\&#39;.$fileName);
        }else{
            return view("Alert",["msg"=>"图片上传失败"]);
        }
Copy after login

相关推荐:

PHP图片裁剪与缩放示例(无损裁剪图片)

The above is the detailed content of PHP implements uploading cropped pictures. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!