0

我可以毫无问题地裁剪 50K 到 10 mb 的图像。当我将 trigram 传输到 Hostgater 的 VPS 服务器时,裁剪过程永远不会完成。“泡沫”从未停止。我在我的 VPS 服务器上配置了以下设置 max_execution_time => 300,memory_limit => 1000,post_max_size => 1000,max_input_time=>60 任何其他我错过的东西请帮忙。检查以下链接上的问题https://www.boats4sale.com/b4sell/individual/dashbaord/editListing/684用户名 => Ajay@1234567890 密码 => Ajay@1234567890 还找到代码。 服务器上的大图像裁剪需要什么样的设置 还找到我使用的代码 public function img_crop_to_file() {

         $imgUrl = $_POST['imgUrl'];
        // original sizes
        $imgInitW = $_POST['imgInitW'];
        $imgInitH = $_POST['imgInitH'];
        // resized sizes
        $imgW = $_POST['imgW'];
        $imgH = $_POST['imgH'];
        // offsets
        $imgY1 = $_POST['imgY1'];
        $imgX1 = $_POST['imgX1'];
        // crop box
        $cropW = $_POST['cropW'];
        $cropH = $_POST['cropH'];
        // rotation angle
        $angle = $_POST['rotation'];

        $jpeg_quality = 50;

        $output_filename = "temp/croppedImg_".rand();

        // uncomment line below to save the cropped image in the same location as the original image.
        //$output_filename = dirname($imgUrl). "/croppedImg_".rand();

        $what = getimagesize($imgUrl);

        switch(strtolower($what['mime']))
        {
            case 'image/png':
                $img_r = imagecreatefrompng($imgUrl);
                $source_image = imagecreatefrompng($imgUrl);
                $type = '.png';
                break;
            case 'image/jpeg':
                $img_r = imagecreatefromjpeg($imgUrl);
                $source_image = imagecreatefromjpeg($imgUrl);
                error_log("jpg");
                $type = '.jpeg';
                break;
            case 'image/gif':
                $img_r = imagecreatefromgif($imgUrl);
                $source_image = imagecreatefromgif($imgUrl);
                $type = '.gif';
                break;
            default: die('image type not supported');
        }
        //Check write Access to Directory
        if(!is_writable(dirname($output_filename))){
        /*$response=array();*/
            $response = Array(
                "status" => 'error',
                "message" => 'Can`t write cropped File'
            );    
        }else{

            // resize the original image to size of editor
            $resizedImage = imagecreatetruecolor($imgW, $imgH);

            imagecopyresampled($resizedImage, $source_image, 0, 0, 0, 0, $imgW, $imgH, $imgInitW, $imgInitH);
            // rotate the rezized image
            $rotated_image = imagerotate($resizedImage, -$angle, 0);
            //$rotated_image = $angle == 0 ? $resizedImage : imagerotate($resizedImage, -$angle, 0);
            // find new width & height of rotated image
            $rotated_width = imagesx($rotated_image);
            $rotated_height = imagesy($rotated_image);
            // diff between rotated & original sizes
            $dx = $rotated_width - $imgW;
            $dy = $rotated_height - $imgH;
            // crop rotated image to fit into original rezized rectangle
            $cropped_rotated_image = imagecreatetruecolor($imgW, $imgH);
            imagecolortransparent($cropped_rotated_image, imagecolorallocate($cropped_rotated_image, 0, 0, 0));
            imagecopyresampled($cropped_rotated_image, $rotated_image, 0, 0, $dx / 2, $dy / 2, $imgW, $imgH, $imgW, $imgH);
            // crop image into selected area

            $final_image = imagecreatetruecolor($cropW, $cropH);
            imagecolortransparent($final_image, imagecolorallocate($final_image, 0, 0, 0));
            // if image width is smaller than defined crop field or not
if($imgW < $cropW){
    $dst_x = $imgX1;
    $dst_y = $imgY1;
    $src_x = $src_y = 0;
    $width = $imgW;
    $height = $imgH;
}else{
    $dst_x = $dst_y = 0;
    $src_x = $imgX1;
    $src_y = $imgY1;
    $width = $cropW;
    $height = $cropH;
}
            imagecopyresampled($final_image, $cropped_rotated_image, 0, 0, $imgX1, $imgY1, $cropW, $cropH, $cropW, $cropH);
            /*imagecopyresampled($final_image, $cropped_rotated_image, $dst_x, $dst_y, $src_x, $src_y, $width, $height, $width, $height);*/
            // finally output png image
            //imagepng($final_image, $output_filename.$type, $png_quality);
            imagejpeg($final_image, $output_filename.$type, $jpeg_quality);
            $response = Array(
                "status" => 'success',
                 "url" => base_url().$output_filename.$type
            );  
        }

        print json_encode($response);
    }
4

0 回答 0