osclass增加支持webp格式

1、basic_data.sql

数据表:t_preference中的('osclass', 'allowedExt', 'png,gif,jpg,jpeg', 'STRING'),添加:'png,gif,jpg,jpeg,webp'

2、includes/osclass/mimes.php

'webp' => 'image/webp',

3、includes/osclass/classes/ImageProcessing.php

修改private function __construct($imagePath) {}

switch (@$this->image_info['mime']) {case 'image/gif':$this->ext = 'gif';$this->mime = 'image/gif';break;case 'image/png':$this->ext = 'png';$this->mime = 'image/png';break;case 'image/webp': // 增加 WebP 处理$this->ext = 'webp';$this->mime = 'image/webp';break;default:$this->ext = 'jpg';$this->mime = 'image/jpeg';if (!$this->_use_imagick) {$bg = imagecreatetruecolor($this->_width, $this->_height);// 处理 PNG、WebP 透明背景if (in_array($this->ext, ['png', 'webp'])) {imagefill($bg, 0, 0, imagecolorallocatealpha($bg, 0, 0, 0, 127));imagesavealpha($bg, true);imagealphablending($bg, false);} else {imagefill($bg, 0, 0, $this->imageColor($bg));imagesavealpha($bg, true);imagealphablending($bg, true);}imagecopy($bg, $this->im, 0, 0, 0, 0, $this->_width, $this->_height);imagedestroy($this->im);$this->im = $bg;}break;}

4、savetofile改成

public function saveToFile($imagePath, $ext = null) {if (file_exists($imagePath) && !is_writable($imagePath)) {throw new RuntimeException("$imagePath is not writable!");}if ($ext == null) {$ext = $this->ext;}// 允许 webp 格式if (!in_array($ext, ['png', 'gif', 'webp'])) {$ext = 'jpeg'; // 默认 jpeg}//var_dump($ext);if ($this->_use_imagick) {if ($ext === 'jpeg' && ($this->ext !== 'jpeg' && $this->ext !== 'jpg')) {$bg = new Imagick();$bg->newImage($this->_width, $this->_height, osc_canvas_background());$this->im->thumbnailImage($this->_width, $this->_height, true);$bg->compositeImage($this->im, Imagick::COMPOSITE_OVER, 0, 0);$this->im = $bg;$this->ext = 'jpeg';}$this->im->setImageDepth(8);$this->im->setImageFilename($imagePath);$this->im->setImageFormat($ext);$this->im->writeImage($imagePath);} else {switch ($ext) {case 'gif':imagegif($this->im, $imagePath);break;case 'png':imagepng($this->im, $imagePath, 0);break;case 'webp': // 增加 WebP 处理if (function_exists('imagewebp')) {//var_dump($ext);var_dump('oka');die;imagewebp($this->im, $imagePath);} else {//var_dump($ext);var_dump('okb');die;throw new RuntimeException("WebP format is not supported by GD");}break;default:if (($ext === 'jpeg' && ($this->ext !== 'jpeg' && $this->ext !== 'jpg')) || $this->_watermarked) {$this->ext = 'jpeg';}imagejpeg($this->im, $imagePath);break;}}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/14176.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【远程控制】安装虚拟显示器

todesk远程发现没显示器的机器有问题 电脑如果不外接一个显示器那么会默认为1024 768 分辨率需要安装虚拟显示器参考 竟然是一个隐私屏幕的解决方案。 虚拟显示器 Parsec-vdd 项目地址 Parsec-vdd 最大的优点是:支持 4K 高刷、可添加多个虚拟屏、 H-Cursor&#…

嵌入式面试题 C/C++常见面试题整理_7

一.什么函数不能声明为虚函数? 常见的不能声明为虚函数的有:普通函数(非成员函数):静态成员函数;内联成员函数;构造函数;友元函数。 1.为什么C不支持普通函数为虚函数?普通函数(非成员函数)只能被overload,不能被override,声明为虚函数也没有什么意思…

赛博算命之 ”梅花易数“ 的 “JAVA“ 实现 ——从玄学到科学的探索

hello~朋友们!好久不见! 今天给大家带来赛博算命第三期——梅花易数的java实现 赛博算命系列文章: 周易六十四卦 掐指一算——小六壬 更多优质文章:个人主页 JAVA系列:JAVA 大佬们互三哦~互三必回!&#xf…

UNI-MOL: A UNIVERSAL 3D MOLECULAR REPRESENTATION LEARNING FRAMEWORK

UNI-MOL: A UNIVERSAL 3D MOLECULAR REPRESENTATION LEARNING FRAMEWORK Neurips23 推荐指数:#paper/⭐⭐⭐#​(工作量不小) 动机 在大多数分子表征学习方法中,分子被视为 1D 顺序标记或2D 拓扑图,这限制了它们为下游任务整合…

【DeepSeek论文精读】3. DeepSeekMoE:迈向混合专家语言模型的终极专业化

欢迎关注[【AIGC论文精读】](https://blog.csdn.net/youcans/category_12321605.html)原创作品 【DeepSeek论文精读】1. 从 DeepSeek LLM 到 DeepSeek R1 【DeepSeek论文精读】2. DeepSeek LLM:以长期主义扩展开源语言模型 【DeepSeek论文精读】3. DeepS…

AI 编程工具—Cursor 进阶篇 文章改写生成整理爬取

AI 编程工具—Cursor 进阶篇 文章改写生成整理爬取 其实对做自媒体的人而言,整理素材其实是一件非常耗时的事情,今天我们来看一下如何使用Cursor来帮我们解决这些问题,首先我们要建一个单独的项目,因为这个项目不涉及任何代码操作,只是文字相关的事情,还有就是这个项目需…

【Android开发AI实战】基于CNN混合YOLOV实现多车牌颜色区分且针对车牌进行矫正识别(含源码)

文章目录 引言单层卷积神经网络(Single-layer CNN)📌 单层 CNN 的基本结构📌 单层 CNN 计算流程图像 透视变换矫正车牌c实现🪄关键代码实现:🪄crnn结构图 使用jni实现高级Android开发&#x1f3…

LSSVM最小二乘支持向量机多变量多步光伏功率预测(Matlab)

代码下载:LSSVM最小二乘支持向量机多变量多步光伏功率预测(Matlab) LSSVM最小二乘支持向量机多变量多步光伏功率预测 一、引言 1.1、研究背景与意义 随着全球能源危机和环境问题的日益严重,可再生能源的开发利用成为了世界各国…

设计模式Python版 代理模式

文章目录 前言一、代理模式二、代理模式示例三、远程代理四、虚拟代理五、虚拟代理示例 前言 GOF设计模式分三大类: 创建型模式:关注对象的创建过程,包括单例模式、简单工厂模式、工厂方法模式、抽象工厂模式、原型模式和建造者模式。结构型…

自动化测试(selenium篇)

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 一、什么是自动化测试 自动化测试通俗一些来讲,就是相当于将人工测试手段进行转换,让代码去自动执行。 自动化测试主要分为:单元…

【大模型】DeepSeek与chatGPT的区别以及自身的优势

目录 一、前言二、核心技术对比2.1 模型架构设计2.1.1 ChatGPT的Transformer架构2.1.2 DeepSeek的混合架构 2.2 训练数据体系2.2.1 ChatGPT的数据特征2.2.2 DeepSeek的数据策略 三、应用场景对比3.1 通用场景表现3.1.1 ChatGPT的强项领域3.2.2 DeepSeek的专项突破 3.3 响应效率…

RK3568平台开发系列讲解(ConfigFS篇)ConfigFS核心数据结构

🚀返回专栏总目录 文章目录 一、数据结构二、结构体关系三、案例3.1、configfs_subsystem 实例3.2、config_group 实例化四、属性和方法五、config_item实例化沉淀、分享、成长,让自己和他人都能有所收获!😄 理解 ConfigFS 的核心数据结构对于深入使用和定制 ConfigFS 非…

Spring Boot Web 入门

目录 Spring Boot Web 是 Spring Boot 框架的一个重要模块,它简化了基于 Spring 的 Web 应用程序的开发过程。以下是一个 Spring Boot Web 项目的入门指南,涵盖了项目创建、代码编写、运行等关键步骤。 1. 项目创建 使用 Spring Initializr 使用 IDE …

网络工程师 (22)网络协议

前言 网络协议是计算机网络中进行数据交换而建立的规则、标准或约定的集合,它规定了通信时信息必须采用的格式和这些格式的意义。 一、基本要素 语法:规定信息格式,包括数据及控制信息的格式、编码及信号电平等。这是协议的基础,确…

【AI】在Ubuntu中使用docker对DeepSeek的部署与使用

这篇文章前言是我基于部署好的deepseek-r1:8b模型跑出来的 关于部署DeepSeek的前言与介绍 在当今快速发展的技术环境中,有效地利用机器学习工具来解决问题变得越来越重要。今天,我将引入一个名为DeepSeek 的工具,它作为一种强大的搜索引擎&a…

【Kubernetes Pod间通信-第1篇】在单个子网中使用underlay网络实现Pod到Pod的通信

Kubernetes中Pod间的通信 本系列文章共3篇: 【Kubernetes Pod间通信-第1篇】在单个子网中使用underlay网络实现Pod到Pod的通信(本文介绍)【Kubernetes Pod间通信-第2篇】使用BGP实现Pod到Pod的通信【Kubernetes Pod间通信-第3篇】Kubernetes中Pod与ClusterIP服务之间的通信…

Excel 融合 deepseek

效果展示 代码实现 Function QhBaiDuYunAIReq(question, _Optional Authorization "Bearer ", _Optional Qhurl "https://qianfan.baidubce.com/v2/chat/completions")Dim XMLHTTP As ObjectDim url As Stringurl Qhurl 这里替换为你实际的URLDim postD…

MacOS 安装NVM

MacOS 安装NVM 方法一:使用Homebrew安装nvm 打开终端(Terminal),输入以下命令安装Homebrew: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"安装nvm…

采用idea中的HTTP Client插件测试

1.安装插件 采用idea中的HTTP Client插件进行接口测试,好处是不用打开post/swagger等多个软件,并且可以保存测试时的参数,方便后续继续使用. 高版本(2020版本以上)的idea一般都自带这个插件,如果没有也可以单独安装. 2.使用 插件安装完成(或者如果idea自带插件),会在每个Con…

LabVIEW铅酸蓄电池测试系统

本文介绍了基于LabVIEW的通用飞机铅酸蓄电池测试系统的设计与实现。系统通过模块化设计,利用多点传感器采集与高效的数据处理技术,显著提高了蓄电池测试的准确性和效率。 ​ 项目背景 随着通用航空的快速发展,对飞机铅酸蓄电池的测试需求也…