【问题标题】:Issue Converting JPG to PNG and Compressing | PHP将 JPG 转换为 PNG 和压缩的问题 | 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");

是否可以进行转换和压缩?

【问题讨论】:

    标签: php png image-compression


    【解决方案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(最好质量,最大文件)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-15
      • 2011-09-30
      • 2012-08-13
      • 2012-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-09
      相关资源
      最近更新 更多