zoukankan      html  css  js  c++  java
  • php 裁剪图片

    /**
         * 裁剪图片
         * imageCropper
         * @param string $source_path 图片地址
         * @param string $w_file_path 要保存的地址
         */
        public  function imageCropper($source_path, $w_file_path)
        {
            list($target_width, $height, $type, $attr) = getimagesize($source_path);
            $target_height = $height - ceil($height/6) - 10;
            $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) {
                // image-to-height
                $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) {
                //image-to-widht
                $cropped_width = $source_height / $target_ratio;
                $cropped_height = $source_height;
                $source_x = ($source_width - $cropped_width) / 2;
                $source_y = 0;
            } else {
                //image-size-ok
                $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;
                    break;
            }
            $target_image = imagecreatetruecolor($target_width, $target_height);
            $cropped_image = imagecreatetruecolor($cropped_width, $cropped_height);
            // copy
            imagecopy($cropped_image, $source_image, 0, 0, $source_x, $source_y, $cropped_width, $cropped_height);
            // zoom
            imagecopyresampled($target_image, $cropped_image, 0, 0, 0, 0, $target_width, $target_height, $cropped_width, $cropped_height);
    //        header('Content-Type: image/jpeg');
            $res = imagepng($target_image,$w_file_path);
            return $res;
    //        imagedestroy($source_image);
    //        imagedestroy($target_image);
    //        imagedestroy($cropped_image);
        }
  • 相关阅读:
    jenkins, docker-composer
    php pass-by-reference deprecated &$-->$
    showslow / YSlow for PhantomJS/slimerjs(gecko)/phantomas
    FW qunit introduction
    FW: AMD, CMD, CommonJS和UMD
    nodejs unit test related----faker-cli, sinonjs, mock/stub
    cs api测试
    CloudStack 4.3功能前瞻
    devcloud
    DevCloud for CloudStack Development
  • 原文地址:https://www.cnblogs.com/bkhdd/p/15745342.html
Copyright © 2011-2022 走看看