PHP多功能图片编辑器

news2024/11/26 11:04:36

PHP多功能图片编辑器

  • 前言
  • 效果图
  • 功能说明
  • 平台支持情况
  • 部分源码
  • 领取源码
  • 下期更新

前言

PHP多功能图片编辑器 工具箱网站源码无需数据库上传即用,测试了一下还可以,免费分享自行研究。

效果图

在这里插入图片描述


功能说明

  • ✓ 无需上传,使用浏览器自身进行转换

  • ✓ 批量转换输出webp、jpeg、png、base64、8位png(实验)、gif动图(实验)、webp动图(实验)

  • ✓ 输出指定大小(webp、jpeg)(实验)

  • ✓ 输出颜色数量(gif、png-8)

  • ✓ 选项可自定增加或删除并持久化


平台支持情况

谷歌Chrome火狐Firefox苹果Safari微软EdgeIE
Windows✔️✔️-✔️
Mac OS✔️✔️☑️✔️-
Iphone☑️☑️✔️--
Android???--
️️

✔️ 运行良好 ☑️ 部分支持 ❌ 不支持 ? 未测试


部分源码

let allOkFiles = [],
    alltType = ['jpg', 'jpeg', 'png', 'gif', 'webp', 'svg', 'ico', 'bmp', 'vnd.microsoft.icon'],
    outType = ['jpeg', 'png', 'webp', 'ico'],
    config = {}

let input = document.getElementById("files")
input.addEventListener('change', function() {
    readFiles([...this.files])
}, false)
// 读取并转换图片,全部放进allOkFiles
async function readFiles(allFiles) {
    let files = [...allFiles]
    if (files.length === 0) return
    document.getElementById('loading').style.display = 'block'
    setConfig()
    allOkFiles = []
    files.map(async (file, index) => {
        //获取base64
        let base64 = await file2Base64(file)
        //获取宽和高
        let wAndH = await getImagesWidthHeight(base64)
        let name = () => {
            let n = alltType.filter(f => file.name.endsWith(f))
            return {
                name: file.name.replace(n[0], ''),
                type: n[0]
            }
        }
        // 转换
        let blob = await base642file(base64, config.type, config.size, config.quality)
        allOkFiles.push({
            name: name().name,
            type: name().type,
            base64: base64,
            size: file.size,
            width: wAndH.w,
            height: wAndH.h,
            data: blob
        })
        //遍历完所有文件后
        if (files.length === allOkFiles.length) {
            console.log(allOkFiles)
            //不打包
            if (config.isZip) {
                allOkFiles.map(x => {
                    funDownload(x.data, `${x.name}.${config.type}`)
                })
                document.getElementById('loading').style.display = 'none'
                document.getElementById('pyro').innerHTML =
                    `
                    <div class="before"></div>
                    <div class="after"></div>
                    `
            }
            //打包
            else {
                let zip = new JSZip()
                let time = new Date().getTime()
                let img = zip.folder(time)
                allOkFiles.map(x => {
                    img.file(`${x.name}.${config.type}`, x.data, {
                        base64: false
                    })
                })
                zip.generateAsync({
                        type: "blob"
                    })
                    .then(function(content) {
                        funDownload(content, `${time}.zip`)
                        document.getElementById('loading').style.display = 'none'
                        document.getElementById('pyro').innerHTML =
                            `
                            <div class="before"></div>
                            <div class="after"></div>
                            `
                    })
            }
            // 显示图片
            let img_box = document.getElementById("img_box")
            let img_html = ``
            allOkFiles.map(x => {
                img_html = img_html +
                    `<div class="img_one">
                        <p class="type ${x.type}">${x.type}</p>
                        <p class="size">${x.width}x${x.height}</p>
                        <img src="${x.base64}" alt="">
                    </div>`
            })
            img_box.innerHTML = img_html
        }
    })
}

领取源码

关注下方微信公众号回复 图片编辑器 即可获取 (完全免费,只是关注一下公众号,作者整理不易💖)


下期更新

孤客支付系统

  • 📢本人公众号:祖龙科技工作室
  • 📢博客主页:孤客网络科技工作室官方账号
  • 📢欢迎点赞👍收藏⭐️留言 📝如有错误敬请指正!
  • 📢本文由孤客原创,若侵权联系作者,首发于CSDN博客
  • 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更好的生活💻

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

049_python基于Python的热门微博数据可视化分析

目录 系统展示 开发背景 代码实现 项目案例 获取源码 博主介绍&#xff1a;CodeMentor毕业设计领航者、全网关注者30W群落&#xff0c;InfoQ特邀专栏作家、技术博客领航者、InfoQ新星培育计划导师、Web开发领域杰出贡献者&#xff0c;博客领航之星、开发者头条/腾讯云/AW…

多模态大语言模型(MLLM)-Deepseek Janus

论文链接&#xff1a;https://arxiv.org/abs/2410.13848 代码链接&#xff1a;https://github.com/deepseek-ai/Janus 本次解读Janus: Decoupling Visual Encoding for Unified Multimodal Understanding and Generation 前言 Deepseek出品&#xff0c;必属精品。 创新点 传…

如何在Java应用中发送短信

很多业务场景里&#xff0c;我们都需要发送短信&#xff0c;比如登陆验证码、告警、营销通知、节日祝福等等。 这篇文章&#xff0c;我们聊聊 Java 应用中如何优雅的发送短信。 1 客户端/服务端两种模式 Java 应用中发送短信通常需要使用短信服务提供商提供的短信 API 。 我…

多ip访问多网站

多IP访问多网站 1.预配操作 [rootlocalhost ~]# mount /dev/sr0 /mnt mount: /mnt: WARNING: source write-protected, mounted read-only. [rootlocalhost ~]# systemctl stop firewalld ----------关闭防火墙 [rootlocalhost ~]# setenforce 0 -------关闭selinux2.安装n…

技术人员的自我修炼:在变化中成长

引言 在技术的海洋中&#xff0c;我们每个人都是一名探索者&#xff0c;不断学习、适应、成长。作为一名技术人员&#xff0c;我们不仅要面对自身技能的提升和心态的调整&#xff0c;还要应对外部环境的不断变化。本文将探讨技术人员如何在内部修炼和外部适应中找到平衡&#…

UE5 喷射背包

首选创建一个输入操作 然后在输入映射中添加&#xff0c;shift是向上飞&#xff0c;ctrl是向下飞 进入人物蓝图中编写逻辑&#xff0c;变量HaveJatpack默认true&#xff0c;Thrust为0 最后

【C语言】编译和链接(编译环境和运行环境)

文章目录 一、翻译环境和运行环境二、翻译环境1.编译预处理编译汇编 2.链接 四、运行环境 一、翻译环境和运行环境 在 ANSI C 的任何⼀种实现中&#xff0c;存在两个不同的环境&#xff0c;如下&#xff1a; 翻译环境&#xff1a;在翻译环境中&#xff0c;会通过编译和链接两个…

鸿蒙软件开发中常见的如何快速自动生成二维码?QRCode组件

QRCode 用于显示单个二维码的组件。 说明&#xff1a; 该组件从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 二维码组件的像素点数量与内容有关&#xff0c;当组件尺寸过小时&#xff0c;可能出现无法展示内容的情况&…

在 Controller 层对系统作防御性编程

简介 Web 开发中无论是 MVC 还是 DDD 架构 Controller 层都是系统的门面&#xff0c;既对外的接口&#xff0c;对内的接口&#xff0c;一般情况下任何错误必须组织在 Controller 层 如何作 在 Controller 层中的接口使用 try-catch Slf4j RestController("/") Re…

MobileNetV2实现实时口罩检测tensorflow

项目源码获取方式见文章末尾&#xff01; 回复暗号&#xff1a;13&#xff0c;免费获取600多个深度学习项目资料&#xff0c;快来加入社群一起学习吧。 **《------往期经典推荐------》**项目名称 1.【Informer模型复现项目实战】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【…

[LeetCode] 230. 二叉搜索树中第K小的元素

题目描述&#xff1a; 给定一个二叉搜索树的根节点 root &#xff0c;和一个整数 k &#xff0c;请你设计一个算法查找其中第 k 小的元素&#xff08;从 1 开始计数&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,1,4,null,2], k 1 输出&#xff1a;1示例 2&am…

《计算机视觉》—— 基于 dlib 库的方法将两张人脸图片进行换脸

声明&#xff1a;此篇文章所用的明星照片只为用于演示代码的效果&#xff0c;无诋毁她人肖像之意 一、案例实现的思想 此案例的核心是基于人脸68个关键点检测模型来实现的&#xff0c;人脸68个关键带点检测后的效果如下&#xff1a; 通过对上图中红色区域的转换&#xff0c;…

项目管理必备:如何快速创建项目交付时间表

“不做准备&#xff0c;就准备失败”。项目的成功很大程度上取决于前期规划的充分性和质量。 项目交付时间表是项目管理中一个重要的工具&#xff0c;通过将项目分解为可管理的区块来组织工作。该方法使管理者可以创建分步的工作路径&#xff0c;并展示项目的宏观视图&#xff…

诺贝尔颁给AI啦,没想到高性能计算CHPC也发力了!

诺贝尔化学奖垂青 AlphaFold 3 2020 年 12 月&#xff0c;AlphaFold 2 发布。相较于之前实验成本高、耗时长、蛋白质结构解析困难的传统方法&#xff0c;AlphaFold 2 可以通过深度学习技术&#xff0c;仅需几小时就能准确地预测蛋白质的三维结构&#xff0c;极大地加速了生物…

基于Multisim的水位测量电路设计与仿真

1.利用LED指示灯显示水位&#xff08;最低水位、1/4、1/2、3/4、最高水位&#xff09;。 2.达到最高水位时&#xff0c;自动报警。

uiautomatorviewer安卓9以上正常使用及问题处理

一、安卓9以上使用uiautomatorviewer问题现象 打开Unexpected error while obtaining UI hierarchy 问题详情 Unexpected error while obtaining UI hierarchy java.lang.reflect.InvocationTargetException 二、问题处理 需要的是替换对应D:\software\android-sdk-windows…

AI自动生成PPT哪个软件好?智能生成PPT不再熬夜做课件

大概这世上&#xff0c;都是职场牛马对“PPT”这三个字母的头痛反应最大吧&#xff01; 是的&#xff0c;就连各个年级段的老师也是很头痛——愁着怎样能在排版整齐的情况下&#xff0c;将必考知识点都呈现在PPT每一张幻灯片页面里...... 近期打听到用人工智能生成ppt课件&am…

域渗透相关内网 或 域AD环境搭建 域环境收集方式方法命令 查看 检测域控主机或者域内主机是否安装杀软方式

目录 域基础知识点知道这些就可以了 域 域的优点以及作用 域控 活动目录 活动目录主要功能 域环境搭建操作步骤: 域环境信息收集 信息收集工具 服务端客户端启动方式 CS操作部分 进行信息收集 信息收集操作 域基础知识点知道这些就可以了 域 域模型就是针对大…

MySQL——数据库

什么是数据库 数据库&#xff08;DB , DataBase&#xff09;概念&#xff1a;数据仓库&#xff0c;软件&#xff0c;安装在操作系统&#xff08;window&#xff0c;linux&#xff0c;max&#xff0c;...&#xff09;之上学习数据库最重要的就是学习SQL语句存储500万以下的数据…

HTML5_标签_各类表格的实现

目录 1. 表格标签 1.1 表格的主要作用 1.2 表格的基本语法 1.3 表头单元格标签 1.4 表格属性 案例分析 先制作表格的结构. 后书写表格属性. 代码示例: 1.5 表格结构标签 1.6 合并单元格 合并单元格方式&#xff1a; 目标单元格&#xff1a;(写合并代码) 合并单元…