// 将图片转换为 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
张小明
前端开发工程师
学长亲荐9个一键生成论文工具,自考毕业论文轻松搞定!
学长亲荐9个一键生成论文工具,自考毕业论文轻松搞定! AI 工具让论文写作不再难 对于自考学生来说,撰写毕业论文是一项既重要又充满挑战的任务。在时间紧张、资料繁杂的情况下,如何高效完成一篇符合要求的论文,成为许多…
为开发者厘清选择方向:2025 AIGC最具影响力AI应用开发平台公布
作者:刘文轩 1月17日,在第五届AIGC开发者大会上,至顶科技联合 AIGCLINK 开发者社区评选出了“2025 AIGC 最具影响力 AI 应用开发平台”。评选通过专家推举和社区投票,围绕当下开发者真实使用场景展开,重点关注平台的整…
ssm466洗衣店管理系统--论文
目录SSM466洗衣店管理系统论文摘要开发技术源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!SSM466洗衣店管理系统论文摘要 随着信息技术的快速发展,传统洗衣店管理模式在效率和服务质量上面临诸多挑战。SSM466洗衣店管理系统…
ssm468高校科研学术成果管理系统--论文
目录高校科研学术成果管理系统设计与实现开发技术源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!高校科研学术成果管理系统设计与实现 高校科研学术成果管理系统是针对高等院校科研管理需求开发的信息化平台,旨在实现论文、…
ssm469基于JAVAWEB的辅导员考评管理系统ssm
目录系统概述技术架构功能模块创新点应用价值开发技术源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!系统概述 SSM469基于JAVAWEB的辅导员考评管理系统采用SpringSpringMVCMyBatis(SSM)框架开发,旨在…
没有公网IP,入手了NAS怎么玩?
最近有小伙伴开始折腾NAS,历经千辛万苦之后终于把飞牛NAS搞定了。但是随之而来的又是另一件麻烦的事情:家里的宽带没有下发公网IPv6,自己也不知道怎么去调整,于是就找到了小白。 所以就有了今天的这篇文章:没有公网IP…