// 将图片转换为 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 = '' }js上传图片前改变图片的格式为png
张小明
前端开发工程师
XMLHttpRequest 从入门到实战:GET/POST 请求完整案例
一、前言 在前后端分离开发模式中,AJAX 是实现页面无刷新数据交互的核心技术,而 XMLHttpRequest(简称 XHR)正是浏览器原生支持的 AJAX 底层 API。 相比于现代的 fetch 和 Axios,XMLHttpRequest 兼容性更好࿰…
基于Java的家政搬家智慧管理系统的设计与实现全方位解析:附毕设论文+源代码
1. 为什么这个毕设项目值得你 pick ? 家政搬家智慧管理系统的主要功能模块包括会员管理、订单管理等23个子系统,覆盖了从客户注册到售后服务的全流程。开发背景分析基于传统管理模式效率低下且无法提供个性化服务的实际问题。创新性在于将现代技术与实际需求相结合…
【开题答辩全过程】以地铁安全管理信息系统设计与实现为例,包含答辩的问题和答案
个人简介一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…
从 2025 到 2026,Berachain 的“攻”与“守”
——当 L1 不再靠叙事生存,它还能做什么?2025 年成为 L1 赛道发展的关键分水岭。早期依赖技术先行的叙事——不断追求更高的 TPS、更低的 Gas 成本——已经难以继续支撑估值扩张。基础设施本身并未失去价值,但它不再自动等价于代币价值&…
服装管理订单ERP是什么?主要包括哪些功能?
服装管理订单ERP系统的功能解析与应用 服装管理订单ERP系统是一款专为服装电商行业设计的综合软件,它集成了多个功能模块,包括进销存管理、发货管理、财务管理和商品管理。这些模块相互连接,形成了一个高效的运营平台。进销存管理能够实时监控…
学长亲荐9个AI论文写作软件,专科生轻松搞定毕业论文!
学长亲荐9个AI论文写作软件,专科生轻松搞定毕业论文! 专科生的论文救星,AI 工具如何改变你的写作方式 对于许多专科生来说,毕业论文既是一道门槛,也是一次挑战。尤其是在时间紧张、资料匮乏、写作经验不足的情况下&…