Heim  >  Artikel  >  Backend-Entwicklung  >  PHP implementiert das Hochladen zugeschnittener Bilder

PHP implementiert das Hochladen zugeschnittener Bilder

小云云
小云云Original
2018-03-26 11:48:012954Durchsuche

本文主要和大家分享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"=>"图片上传失败"]);
        }

相关推荐:

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

Das obige ist der detaillierte Inhalt vonPHP implementiert das Hochladen zugeschnittener Bilder. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn