news 2026/4/3 4:30:33

js上传图片前改变图片的格式为png

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
js上传图片前改变图片的格式为png
// 将图片转换为 PNG 格式 const convertImageToPng = (file: File): Promise<File> => { return new Promise((resolve, reject) => { const reader = new FileReader() reader.onload = (e) => { const img = new window.Image() img.onload = () => { // 创建 canvas const canvas = document.createElement('canvas') canvas.width = img.width canvas.height = img.height // 绘制图片到 canvas const ctx = canvas.getContext('2d') if (!ctx) { reject(new Error('无法获取 canvas context')) return } ctx.drawImage(img, 0, 0) // 转换为 PNG blob canvas.toBlob( (blob) => { if (!blob) { reject(new Error('图片转换失败')) return } // 创建新的 File 对象 const pngFile = new File( [blob], file.name.replace(/\.[^.]+$/, '.png'), { type: 'image/png', } ) resolve(pngFile) }, 'image/png', 1.0 ) } img.onerror = () => reject(new Error('图片加载失败')) img.src = e.target?.result as string } reader.onerror = () => reject(new Error('文件读取失败')) reader.readAsDataURL(file) }) } // 上传图片到七牛云 const handleImageUpload = async (e: React.ChangeEvent<HTMLInputElement>) => { const files = e.target.files if (!files || files.length === 0 || !qiniuToken) return const file = files[0] try { // 将图片转换为 PNG 格式 const pngFile = await convertImageToPng(file) const formData = new FormData() const key = `ai/mjBaseImg/${Date.now()}_${pngFile.name}` formData.append('file', pngFile) formData.append('token', qiniuToken) formData.append('key', key) const response = await fetch('https://upload-z1.qiniup.com', { method: 'POST', body: formData, }) const result = await response.json() if (result.code === 200) { const imageUrl = `https://static.xutongbao.top/${result.data.key}` setUploadedImages((prev) => [...prev, imageUrl]) } } catch (error) { console.error('上传失败:', error) } // 清空 input,允许重复选择同一文件 e.target.value = '' }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/28 6:59:07

Spring AI Alibaba与 Agent Scope到底选哪个?

文章目录 引言概念纠正目前的两大发展方向Workflow模式(工作流)运行机制后端视角类比适用场景 Agentic 模式 (智能体 / 自主模式)运行机制&#xff1a;Loop (循环)后端视角类比适用场景 AgentScope java 和 Spring AI Alibaba的区别总结 引言 Spring AI Alibaba 和 Agent Scop…

作者头像 李华
网站建设 2026/3/31 1:28:04

导师推荐!10款AI论文写作软件测评:本科生毕业论文必备工具

导师推荐&#xff01;10款AI论文写作软件测评&#xff1a;本科生毕业论文必备工具 2026年AI论文写作工具测评&#xff1a;为何需要这份榜单&#xff1f; 随着人工智能技术的快速发展&#xff0c;越来越多的本科生开始借助AI工具提升论文写作效率。然而&#xff0c;面对市场上琳…

作者头像 李华
网站建设 2026/3/31 11:21:38

ssm473的阳光养老院管理系统

目录阳光养老院管理系统摘要开发技术源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;阳光养老院管理系统摘要 阳光养老院管理系统基于SSM&#xff08;SpringSpringMVCMyBatis&#xff09;框架开发&#xff0c;旨在为养老机构提供高效、…

作者头像 李华
网站建设 2026/3/19 22:49:05

uv 与 pip:Python 包与依赖管理工具对比

当谈到 Python 的包管理工具时&#xff0c;开发者常常要在 uv 和 pip 之间做出选择。 如果你看重开箱即用、广泛的兼容性和成熟的生态系统&#xff0c;pip 依然是稳妥之选&#xff1b;而如果你更关注安装速度、环境可复现性、干净的卸载行为&#xff0c;或者希望为新项目建立高…

作者头像 李华
网站建设 2026/3/27 17:56:03

如何选择适合跨境电商的全球代理IP?

在跨境电商运营中&#xff0c;代理IP已经成为保障业务顺利运行的重要工具。无论是进行多账号管理、广告投放&#xff0c;还是接触地区限制&#xff0c;都离不开代理IP的帮助。然而&#xff0c;面对市场上种类繁多的代理IP&#xff0c;如何挑选最合适自己的产品呢&#xff1f;下…

作者头像 李华