zoukankan      html  css  js  c++  java
  • 图片压缩(1次)

    • 只针对限定1M
      $data = file_get_contents("输入路径");
      $maxSize = 1 * 1024 * 1024;
      //图片进行压缩
      $data = compressImage($data, $maxSize);
      file_put_contents("输出路径", $data);
      function compressImage($data, $maxSize) {
          $size = strlen($data);
          $img = imagecreatefromstring($data);
          $width = imagesx($img);
          $height = imagesy($img);
          $percent = 1;
          $tmpWidth = $width;
          $tmpHeight = $height;
          while ($size > $maxSize) {
              $tmpPercent = round(log($maxSize, $size), 1);
              $tmpPercent = $tmpPercent == 1 ? $tmpPercent - 0.1 : $tmpPercent;
              $tmpWidth = $tmpWidth * $tmpPercent;
              $tmpHeight = $tmpHeight * $tmpPercent;
              $size = $tmpWidth * $tmpHeight / 0.95;//输出的是png,只适用于1M
              //$size = $tmpWidth * $tmpHeight / 8;//输出的是jpg
              $percent = $percent * $tmpPercent;
          }
          $newWidth = $width * $percent;
          $newHeight = $height * $percent;
          $newImg = imagecreatetruecolor($newWidth, $newHeight);
          imagecopyresampled($newImg, $img, 0, 0, 0, 0, floor($newWidth), floor($newHeight), $width, $height);
          ob_start(); //Turn on output buffering
          imagepng($newImg); //Generate your image
          $data = $output = ob_get_contents(); // get the image as a string in a variable
          ob_end_clean(); //Turn off output buffering and clean it
          imagedestroy($newImg);
          print_r("
      percent={$percent},newWidth={$newWidth},newHeight={$newHeight},size={$size}");
          return $data;
      }
  • 相关阅读:
    Qt:移动无边框窗体(使用Windows的SendMessage)
    github atom 试用
    ENode框架Conference案例转载
    技术
    NET 领域驱动设计实战系列总结
    mac 配置Python集成开发环境
    User、Role、Permission数据库设计ABP
    Oracle 树操作
    Oracle 用户权限管理方法
    Web Api 2, Oracle and Entity Framework
  • 原文地址:https://www.cnblogs.com/fatRabbit-/p/11394626.html
Copyright © 2011-2022 走看看