IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> PHP 压缩图片并保留png图片背景为白色 -> 正文阅读

[PHP知识库]PHP 压缩图片并保留png图片背景为白色

话不多说直接上代码:

<?php

/**
 图片压缩操作类
 */
class Image
{
  private $src;
  private $imageinfo;
  private $image;
  public $percent = 0.1;
  public function __construct($src)
  {
    $this->src = $src;
  }
  /**
  打开图片
   */
  public function openImage()
  {
    list($width, $height, $type, $attr) = getimagesize($this->src);
    $this->imageinfo = array(
      'width' => $width,
      'height' => $height,
      'type' => image_type_to_extension($type, false),
      'attr' => $attr
    );
    $fun = "imagecreatefrom" . $this->imageinfo['type'];
    $this->image = $fun($this->src);
  }
  /**
  操作图片
   */
  public function thumpImage()
  {
    $new_width = $this->imageinfo['width'] * $this->percent;
    $new_height = $this->imageinfo['height'] * $this->percent;
    $image_thump = imagecreatetruecolor($new_width, $new_height);
    //将原图复制带图片载体上面,并且按照一定比例压缩,极大的保持了清晰度
    if($this->imageinfo['type'] == "png"){
        imagealphablending($image_thump, false);//关闭混合模式,以便透明颜色能覆盖原画板
        imagesavealpha($image_thump, true);//设置保存PNG时保留透明通道信息
        $bg = imagecolorallocatealpha($image_thump, 255, 255, 255,127);
        imagefill($image_thump, 0, 0, $bg);
    }
    imagecopyresampled($image_thump, $this->image, 0, 0, 0, 0, $new_width, $new_height, $this->imageinfo['width'], $this->imageinfo['height']);
    imagedestroy($this->image);
    $this->image = $image_thump;
  }
  /**
  输出图片
   */
  public function showImage()
  {
    header('Content-Type: image/' . $this->imageinfo['type']);
    $funcs = "image" . $this->imageinfo['type'];
    $funcs($this->image);
  }
  /**
  保存图片到硬盘
   */
  public function saveImage($dstImgName)
  {
      if(empty($dstImgName)) return false;
      $funcs = "image".$this->imageinfo['type'];
      $allowImgs = ['.jpg', '.jpeg', '.png', '.bmp', '.wbmp','.gif'];   //如果目标图片名有后缀就用目标图片扩展名 后缀,如果没有,则用源图的扩展名
      $dstExt =  strrchr($dstImgName ,".");
      $sourseExt = strrchr($this->src ,".");
      if(!empty($dstExt)) $dstExt =strtolower($dstExt);
      if(!empty($sourseExt)) $sourseExt =strtolower($sourseExt);
      //有指定目标名扩展名
      if(!empty($dstExt) && in_array($dstExt,$allowImgs)){
          $dstName = $dstImgName;
      }elseif(!empty($sourseExt) && in_array($sourseExt,$allowImgs)){
          $dstName = $dstImgName.$sourseExt;
      }else{
          $dstName = $dstImgName.$this->imageinfo['type'];
      }
      if($this->imageinfo['type'] == "png"){
          $funcs($this->image,$dstName,9);
      }elseif ($this->imageinfo['type'] == "jpeg"){
          $funcs($this->image,$dstName,25);
      }else{
          $funcs($this->image,$dstName);
      }
  }
  /**
  销毁图片
   */
  public function __destruct()
  {
    imagedestroy($this->image);
  }
}


  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-08-21 15:07:20  更:2021-08-21 15:10:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/13 20:12:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码