较低分辨率的图像加载速度比高分辨率的相同图像慢

时间:2018-06-26 13:27:33

标签: php

我正在建立一个网站,用户可以在其中上传图像并旋转图像。 我还使用php将图像调整了2倍的大小,以使图像具有2种尺寸(取决于显示位置)。

我试图通过将imagejpeg的第三个渗透率设置为84而不是100来降低jpg图像的分辨率,但是奇怪的是,较低分辨率的图像花费的时间相同,有时加载时间比同一图像更长具有高分辨率。 (我多次在pingdom上对其进行了测试。)

这里是指向包含高分辨率图像的页面的链接。 http://9typestest.com/ahblick3/cat4.php?cat=1530016402548 而下一个链接是具有相同图像但分辨率较低的图像库 http://9typestest.com/ahblick3/cat4.php?cat=1530018903821

这是我用来调整图像大小的PHP。 为了获得更高的分辨率,我用84代替了imagjpeg的第三个字母中的100

 if(in_array($filee,$images)){

    //rotate image
    $degrees = -(float)$deg;
    $source_properties = getimagesize($filetl);
    $image_type = $source_properties[2]; 
    if( $image_type == IMAGETYPE_JPEG ) {
    header('Content-type: image/jpeg');
        $source = imagecreatefromjpeg($filetl);
        $rotate = imagerotate($source, $degrees, 0);
        imagejpeg($rotate,$filetl,100);
        imagedestroy($source);
        imagedestroy($rotate);
    }elseif($image_type == IMAGETYPE_PNG){
        echo'yesyesyesn';
        header('Content-type: image/png');
        $source = imagecreatefrompng($filetl);
        $rotate = imagerotate($source, $degrees, 0);
        imagepng($rotate,$filetl,9);
        imagedestroy($source);
        imagedestroy($rotate);
    }
        //see how much to resize image first time
            if($source_properties[0]>10000){
                $final_w = 9.5;
            }elseif($source_properties[0]>7500&&$source_properties[0]<10000){
                $final_w = 7;
            }elseif($source_properties[0]>6000&&$source_properties[0]<7500){
                $final_w = 5.5;
            }elseif($source_properties[0]>4500&&$source_properties[0]<6000){
                $final_w = 4;
            }elseif($source_properties[0]>3000&&$source_properties[0]<4500){
                $final_w = 2.5;
            }elseif($source_properties[0]>1500&&$source_properties[0]<2999){
                $final_w = 1.4;
            }else{
                $final_w = 1;
            }
            //resize image first time
            if( $image_type == IMAGETYPE_JPEG ) {
            $image_resource_id = imagecreatefromjpeg($filetl);  
            $target_width = $source_properties[0] /$final_w;
            $target_height = $source_properties[1] / $final_w;
            $target_layer=imagecreatetruecolor($target_width,$target_height);
            imagecopyresampled($target_layer,$image_resource_id,0,0,0,0,$target_width,$target_height, $source_properties[0],$source_properties[1]);
            imagejpeg($target_layer,'dest2/'.$filename,100);
            imagejpeg($target_layer,'destp/'.$filename.'.html',100);
            }
            elseif( $image_type == IMAGETYPE_GIF )  {  
            $image_resource_id = imagecreatefromgif($filetl);
            $target_width = $source_properties[0] /$final_w;
            $target_height = $source_properties[1] / $final_w;
            $target_layer=imagecreatetruecolor($target_width,$target_height);
            imagecopyresampled($target_layer,$image_resource_id,0,0,0,0,$target_width,$target_height, $source_properties[0],$source_properties[1]);
            imagegif($target_layer,'dest2/'.$filename,100);
            imagegif($target_layer,'p/'.$filename.'.html',100);
            }
            elseif( $image_type == IMAGETYPE_PNG ) {
            $image_resource_id = imagecreatefrompng($filetl);
            $target_width = $source_properties[0] /$final_w;
            $target_height = $source_properties[1] / $final_w;
            $target_layer=imagecreatetruecolor($target_width,$target_height);
            imagecopyresampled($target_layer,$image_resource_id,0,0,0,0,$target_width,$target_height, $source_properties[0],$source_properties[1]);
            imagepng($target_layer,'dest2/'.$filename,9);
            imagepng($target_layer,'destp/'.$filename.'.html',9);
            }
        $filen = time();

        //resize watermark image 
        $source_properties2 = getimagesize('out/water3.png');
        if($target_width > $target_height){
            $target_width = $target_height * 0.45;
            $target_height = $target_width * 0.45;
        }else{
            $target_width = $target_width * 0.45;
            $target_height = $target_width * 0.45;
        }
        $srcImage = imagecreatefrompng( 'out/water3.png' ); 

        $targetImage = imagecreatetruecolor( $target_width, $target_height );   
        imagealphablending( $targetImage, false );
        imagesavealpha( $targetImage, true );
        imagecopyresampled( $targetImage, $srcImage, 
            0, 0, 
            0, 0, 
        $target_width,$target_height, $source_properties2[0],$source_properties2[1] );
        imagepng(  $targetImage, 'out/water4.png', 9 );

        //creat a watermark on the image
        function watermark_image($target, $wtrmrk_file, $newcopy) {
            $watermark = imagecreatefrompng($wtrmrk_file);
            imagealphablending($watermark, true);
            imagesavealpha($watermark, true);
            $source_properties2 = getimagesize($target);
            $image_type2 = $source_properties2[2];
            if( $image_type2 == IMAGETYPE_JPEG ) {  
                $img = imagecreatefromjpeg($target);
            }elseif( $image_type2 == IMAGETYPE_GIF )  {
                $img = imagecreatefromgif($target);
            }elseif( $image_type2 == IMAGETYPE_PNG )  {
                $img = imagecreatefrompng($target);
            }                   
            $img_w = imagesx($img);
            $img_h = imagesy($img);
            $wtrmrk_w = imagesx($watermark);
            $wtrmrk_h = imagesy($watermark);
            $dst_x = ($img_w / 2) - ($wtrmrk_w / 2); // For centering the watermark on any image
            $dst_y = ($img_h / 2) - ($wtrmrk_h / 2); // For centering the watermark on any image
            imagecopy($img, $watermark, $dst_x, $dst_y, 0, 0, $wtrmrk_w, $wtrmrk_h);
            imagejpeg($img, $newcopy, 100);
            imagedestroy($img);
            imagedestroy($watermark);
        }
        $logo = 'out/water4.png';
            if(watermark_image('dest2/'.$filename,$logo, 'dest/'.$filename)){
                echo'big yes';
            }else{
                echo 'big no';
            }


        //see how much to resize image second time
        $source_properties = getimagesize('dest/'.$filename);
        $filesize = filesize('dest/'.$filename);
        $filesize /= 1000;
            if($source_properties[0]>3500){
                $final_w = 8.5;
            }elseif($source_properties[0]>2999&&$source_properties[0]<3500){
                $final_w = 7.5;
            }elseif($source_properties[0]>2499&&$source_properties[0]<3000){
                $final_w = 6.5;
            }elseif($source_properties[0]>1999&&$source_properties[0]<2500){
                $final_w = 5.5;
            }elseif($source_properties[0]>1499&&$source_properties[0]<2000){
                $final_w = 4.6;
            }elseif($source_properties[0]>999&&$source_properties[0]<1500){
                $final_w = 3.1;
            }elseif($source_properties[0]>500&&$source_properties[0]<1000){
                $final_w = 1.2;
            }else{
                $final_w = 1;
            }

            $image_type = $source_properties[2]; 

            // resize image second time
            if( $image_type == IMAGETYPE_JPEG ) {
            $image_resource_id = imagecreatefromjpeg('dest/'.$filename);  
            //$target_layer = fn_resize($image_resource_id,$source_properties[0],$source_properties[1]);
            $target_width = $source_properties[0] /$final_w;
            $target_height = $source_properties[1] / $final_w;
            $target_layer=imagecreatetruecolor($target_width,$target_height);
            imagecopyresampled($target_layer,$image_resource_id,0,0,0,0,$target_width,$target_height, $source_properties[0],$source_properties[1]);
            imagejpeg($target_layer,'sdest/'.$filename,100);
            }
            elseif( $image_type == IMAGETYPE_GIF )  {  
            $image_resource_id = imagecreatefromgif('dest/'.$filename);
            $target_width = $source_properties[0] /$final_w;
            $target_height = $source_properties[1] / $final_w;
            $target_layer=imagecreatetruecolor($target_width,$target_height);
            imagecopyresampled($target_layer,$image_resource_id,0,0,0,0,$target_width,$target_height, $source_properties[0],$source_properties[1]);
            imagegif($target_layer,'sdest/'.$filename,100);
            }
            elseif( $image_type == IMAGETYPE_PNG ) {
            $image_resource_id = imagecreatefrompng('dest/'.$filename);
            $target_width = $source_properties[0] /$final_w;
            $target_height = $source_properties[1] / $final_w;
            $target_layer=imagecreatetruecolor($target_width,$target_height);
            imagecopyresampled($target_layer,$image_resource_id,0,0,0,0,$target_width,$target_height, $source_properties[0],$source_properties[1]);
            imagepng($target_layer,'sdest/'.$filename,9);
            }
    }

0 个答案:

没有答案