将 JPG 转换为 PNG 和压缩的问题 | PHP
Posted
技术标签:
【中文标题】将 JPG 转换为 PNG 和压缩的问题 | PHP【英文标题】:Issue Converting JPG to PNG and Compressing | PHP 【发布时间】:2021-06-18 17:33:22 【问题描述】:基本上我想将图像上传到网络服务器,并尽可能将其从 JPG 转换为 PNG。
以下是我目前必须从移动设备上传 JPG 图片:
<?php
if(!empty($_FILES['uploaded_file']))
$path = "uploads/";
$path = $path . basename( $_FILES['uploaded_file']['name']);
if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $path))
echo "The file ". basename( $_FILES['uploaded_file']['name']).
" has been uploaded";
else
echo "There was an error uploading the file, please try again!";
?>
这很好用,但我现在必须将文件转换为 PNG 并压缩 - 为此我尝试过使用这样的代码,但我不明白如何实现它并添加压缩。
$image = imagecreatefromjpeg( "image.jpg" );
imagealphablending($image, true);
imagepng($image, "image.png");
是否可以进行转换和压缩?
【问题讨论】:
【参考方案1】:在官方 php 文档中:https://www.php.net/imagepng
据说imagepng的函数签名是:
imagepng ( resource $image , mixed $to = null , int $quality = -1 , int $filters = -1 ) : bool
参数质量:
- quality
Compression level: from 0 (no compression) to 9.
The default (-1) uses the zlib compression default.
For more information see the » zlib manual.
因此,当您在下面的代码中将图像保存为 PNG 时,它已经被压缩了:
$image = imagecreatefromjpeg( "image.jpg" );
imagealphablending($image, true);
imagepng($image, "image.png");
如果您想要更高的压缩率(即:更小的尺寸,更差的图像质量),那么您只需在质量参数中输入更高的数字(接近 9 = 更重的压缩率)
$image = imagecreatefromjpeg( "image.jpg" );
imagealphablending($image, true);
imagepng($image, "image.png", 9); // heavily compressed
您需要小心,尽管 imagejpeg
https://www.php.net/imagejpeg 也有 quality
参数,但其范围从 0(最差质量,较小文件)到 100(最好质量,最大文件)。
【讨论】:
以上是关于将 JPG 转换为 PNG 和压缩的问题 | PHP的主要内容,如果未能解决你的问题,请参考以下文章