Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么$conigf[';quality';]参数不适用于png文件,但在codeigniter中上载图像时却适用于jpg?_Php_Codeigniter_Imagemagick_Image Uploading_Imagelibrary - Fatal编程技术网

Php 为什么$conigf[';quality';]参数不适用于png文件,但在codeigniter中上载图像时却适用于jpg?

Php 为什么$conigf[';quality';]参数不适用于png文件,但在codeigniter中上载图像时却适用于jpg?,php,codeigniter,imagemagick,image-uploading,imagelibrary,Php,Codeigniter,Imagemagick,Image Uploading,Imagelibrary,我一直在尝试在我的codeigniter API中使用imagemagic。问题是下面的代码可以很好地用于我的jpg图像压缩。当我上传2MB大小的“.jpg”图像时,它成功地将其大小调整为服务器上完美的80kb文件,但当我使用“.png”扩展名时,大小会减小,但不会太大,它仍然为我提供300kb的图像大小,我观察到,使用png格式,“质量”不会产生影响。我试着将质量设置为100和50,但“.png”的大图像大小结果仍然相同 而且,如果我删除“宽度”和“高度”配置参数,那么“质量”不会影响图像文件

我一直在尝试在我的codeigniter API中使用imagemagic。问题是下面的代码可以很好地用于我的jpg图像压缩。当我上传2MB大小的“.jpg”图像时,它成功地将其大小调整为服务器上完美的80kb文件,但当我使用“.png”扩展名时,大小会减小,但不会太大,它仍然为我提供300kb的图像大小,我观察到,使用png格式,“质量”不会产生影响。我试着将质量设置为100和50,但“.png”的大图像大小结果仍然相同

而且,如果我删除“宽度”和“高度”配置参数,那么“质量”不会影响图像文件,它会上载非常大的图像。。。没有基于“质量”参数的图像文件大小压缩

在我犯错或遗漏什么的地方,有人能帮我吗

我的API:

public function multi_image_upload()
    {
        $aa = array();
        if (!empty($_FILES['images'])) {
            foreach ($_FILES['images']['name'] as $key => $image) {
                $extFile = $_FILES['images']['name'][$key];
                $ext = pathinfo($extFile, PATHINFO_EXTENSION);
                $nm = date('ymdhis') . '-bingo' . rand(11111, 99999);
                $filnm = $nm . ".png";
                $file = APPPATH . '../upld/biz/' . $filnm;
                $newname = $filnm;
                $source_image = $file;
                if (move_uploaded_file($_FILES['images']['tmp_name'][$key], $file)) {
                    $this->fun->imageupload("upld/biz/", $newname, $source_image);
                    if (file_exists($file)) {
                        unlink($file);
                    }
                }
            }
            $res = $this->responce(false, $aa);
        } else {
            $res = $this->responce(true, "Please select image");
        }
        echo $res;
    }
图像上传模式:

public function imageupload($url, $newname, $source_image)
        {
            $path = APPPATH . '../' . $url;
            $imgsz = array(256,700);
            foreach ($imgsz as $imxs) {
                $sizefolder = $imxs . "x" . $imxs . "/";
                if (!file_exists($path . $sizefolder)) {
                    mkdir($path . $sizefolder, 0777);
                }
                $size = getimagesize($source_image);
                $filekb = filesize($source_image); //            $config['image_library'] = 'gd2';
                $config['image_library'] = 'ImageMagick';
                $config['library_path'] = '/usr/bin/';
                $config['overwrite'] = TRUE;
                $config['source_image'] = $source_image;
                $config['new_image'] = $path . $sizefolder . $newname;
                $config['quality'] = 100;
                if ($size[1] > $size[0]) {
                    $config['height'] = $imxs;
                } else {
                    $config['width'] = $imxs;
                }
                $this->load->library('image_lib');
                $this->image_lib->initialize($config);
                $this->image_lib->resize();
            }
        }

JPEG是一种有损压缩,这意味着您可以通过设置质量设置来限制输出图像的大小,从而降低图像质量和文件大小。 PNG是一种无损压缩,因此不能限制质量-它始终保持不变。但是你可以限制压缩——Imagemagick在缩小PNG文件方面所做的努力——但就像e。GZIP压缩输出大小在很大程度上取决于数据类型,而大多数图像的压缩效果并不好


有关限制PNG文件大小的更多选项,请参见。

这是否回答了您的问题?ImageMagick中的quality对JPG和fo PNG使用不同的值范围。看见