我一直在尝试在我的代码点火器API中使用imagemagic。问题是下面的代码在我的jpg图像压缩中工作正常。当我上传 2MB 大小的".jpg"图像时,它成功地将其大小调整为服务器上完美的 80kb 文件,但是当我使用".png"扩展名时,大小会下降,但并没有那么多,它仍然给我 300kb 的图像大小,我观察到使用 png 格式"质量"不起作用。我尝试将质量设置为 100 和 50,但".png"的大图像大小的结果仍然相同。
而且,如果我删除"宽度"和"高度"配置参数,而不仅仅是"质量"不会影响它上传的图像文件,它上传的图像非常大......没有基于"质量"参数的图像文件大小压缩。
谁能帮助我犯错或遗漏什么???
我的接口:
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文件更小而付出的努力 - 但就像压缩一样.ZIP输出大小在很大程度上取决于数据类型 - 并且大多数图像的压缩效果不是特别好。
另请参阅使用 ImageMagick 压缩 PNG 图像,了解有关限制 PNG 文件大小的更多选项。