当前位置: 首页 > news >正文

网站开发网站设计的标准长春网站建设方案推广

网站开发网站设计的标准,长春网站建设方案推广,拓者设计,郑州网站优化哪家好OPEN-IMAGE-TINY,一个基于 Electron VUE3 的图片压缩工具,项目开源地址:https://github.com/0604hx/open-image-tiny ℹ️ 需求描述 在上一篇文章一段代码利用 snapdom 将 CSDN 博文转化为长图片(PNG/JPG/PDF)中&…

OPEN-IMAGE-TINY,一个基于 Electron + VUE3 的图片压缩工具,项目开源地址:https://github.com/0604hx/open-image-tiny

ℹ️ 需求描述

在上一篇文章一段代码利用 snapdom 将 CSDN 博文转化为长图片(PNG/JPG/PDF)中,我截取到一张长图,想要垂直切割成多张高度一致的小图。虽然用美图秀秀之类的软件很快就能做到,奈何我觉得图片压缩工具也应该有这样的一个功能,于是就有了这篇文章😄。

功能说明:

  • 只需要按设定的高度垂直切割
  • 最后一张小图高度不足时填充指定颜色

🧑‍💻 核心代码

后端

//electron\tool.js
/*** @typedef {Object} SplitConfig - 切割配置* @property {Number} height - 高度* @property {Boolean} fit - 是否自动填充* @property {String} bgColor - 填充颜色** 垂直切割图片** @param {String} origin - 原图片* @param {SplitConfig} config - 配置*/
exports.splitImageVertical = async (origin, config)=>{const { width, height } = await this.readImgSize(origin)config.fit ??= trueconst ext = path.extname(origin)const count = Math.ceil(height / config.height)const outputDir = path.join(path.dirname(origin), `${path.basename(origin, ext)}-${config.height}px`)if(!existsSync(outputDir))mkdirSync(outputDir)const image = sharp(origin)let fileCount = 0let started = Date.now()for(let i=0;i<count;i++){const top = i * config.heightconst curHeight = Math.min(config.height, height - top)let chunk = image.clone().extract({ left:0, top, width, height: curHeight })//自动填充白色背景if(config.fit === true && config.height > curHeight){chunk = chunk.extend({ top:0, bottom: config.height - curHeight, left:0, right:0, background: config.bgColor||"#ffffff" })}let outFile = path.join(outputDir, `切割-${i+1}.${ext}`)await chunk.toFile(outFile)console.debug(`切割图片 > ${outFile}`)fileCount ++}return { total:fileCount, dir: outputDir, used: Date.now() - started }
}

注册 ipcMain 处理函数:

const handlers = {/**** @param {Electron.IpcMainInvokeEvent} e* @param {String} filePath* @param {import("./tool").SplitConfig} config* @returns {Object}*/'split': async (e, filePath, config)=> await splitImageVertical(filePath, config)
}

UI界面

<template><n-form :show-feedback="false" label-placement="left"><n-flex vertical><n-form-item label="切割高度"><n-input-number class="cell" :min="0" :step="50" v-model:value="config.height"><template #suffix><Tag>px</Tag></template></n-input-number></n-form-item><n-form-item label="自动填充"><n-switch v-model:value="config.fit" /></n-form-item><n-form-item v-if="config.fit==true" label="填充颜色"><n-color-picker v-model:value="config.bgColor" :show-alpha="false" /></n-form-item><n-button block type="primary" secondary :loading @click="toSplit">开始切割</n-button></n-flex></n-form>
</template><script setup>const props = defineProps({img:{ type:Object }})const config = reactive({ height:1000, fit:true, bgColor:"#ffffff" })const loading = ref(false)const toSplit=()=>{if(config.height >= props.img.height) return M.warn(`切割高度不能大于图片原高度`)loading.value = trueH.action('split', props.img.path, toRaw(config)).then(v=>{loading.value = falselet { total, dir, used } = vM.dialog({maskClosable: false, showIcon: true,title: `切割完成`,content: `共生成 ${total} 张小图,耗时 ${used} 毫秒。`,positiveText:"打开图片文件夹",onPositiveClick: ()=>H.action('open', dir)})})}
</script>

🚀 界面实现


文章转载自:
http://rachiform.sfrw.cn
http://timaru.sfrw.cn
http://hydrocolloid.sfrw.cn
http://kinsmanship.sfrw.cn
http://tbilisi.sfrw.cn
http://realisation.sfrw.cn
http://joppa.sfrw.cn
http://overpersuade.sfrw.cn
http://scanties.sfrw.cn
http://ruffianize.sfrw.cn
http://martyrdom.sfrw.cn
http://eutrophicate.sfrw.cn
http://lemmatize.sfrw.cn
http://dyspnea.sfrw.cn
http://bassist.sfrw.cn
http://whoosy.sfrw.cn
http://scuzzy.sfrw.cn
http://gunrunner.sfrw.cn
http://caret.sfrw.cn
http://recitable.sfrw.cn
http://superovulation.sfrw.cn
http://manganate.sfrw.cn
http://bureaucrat.sfrw.cn
http://bucktooth.sfrw.cn
http://tace.sfrw.cn
http://unfilial.sfrw.cn
http://transport.sfrw.cn
http://psychasthenia.sfrw.cn
http://adversarial.sfrw.cn
http://intuit.sfrw.cn
http://impermissibly.sfrw.cn
http://licking.sfrw.cn
http://underexercise.sfrw.cn
http://spermatogenetic.sfrw.cn
http://seabed.sfrw.cn
http://typhlosis.sfrw.cn
http://cronk.sfrw.cn
http://chirurgeon.sfrw.cn
http://mousaka.sfrw.cn
http://viole.sfrw.cn
http://redefect.sfrw.cn
http://mediaevalist.sfrw.cn
http://synfuel.sfrw.cn
http://grimace.sfrw.cn
http://feudalize.sfrw.cn
http://oligomycin.sfrw.cn
http://bacardi.sfrw.cn
http://birchite.sfrw.cn
http://keyword.sfrw.cn
http://impersonal.sfrw.cn
http://accumbent.sfrw.cn
http://handful.sfrw.cn
http://avenge.sfrw.cn
http://theatergoing.sfrw.cn
http://flamboyance.sfrw.cn
http://anarchical.sfrw.cn
http://stunning.sfrw.cn
http://squirt.sfrw.cn
http://lymphatitis.sfrw.cn
http://cretinoid.sfrw.cn
http://astuteness.sfrw.cn
http://burnsides.sfrw.cn
http://guttifer.sfrw.cn
http://coldhearted.sfrw.cn
http://carina.sfrw.cn
http://assistance.sfrw.cn
http://lansdowne.sfrw.cn
http://photobiological.sfrw.cn
http://protective.sfrw.cn
http://agrometeorological.sfrw.cn
http://zymogenic.sfrw.cn
http://vote.sfrw.cn
http://rehydration.sfrw.cn
http://jawlike.sfrw.cn
http://fayum.sfrw.cn
http://downbow.sfrw.cn
http://dogmata.sfrw.cn
http://ojt.sfrw.cn
http://methacrylic.sfrw.cn
http://kilroy.sfrw.cn
http://liveborn.sfrw.cn
http://matin.sfrw.cn
http://boardinghouse.sfrw.cn
http://munificent.sfrw.cn
http://cannula.sfrw.cn
http://pantomorphic.sfrw.cn
http://hemoglobin.sfrw.cn
http://antineuritic.sfrw.cn
http://mislead.sfrw.cn
http://edward.sfrw.cn
http://canonic.sfrw.cn
http://rating.sfrw.cn
http://boffo.sfrw.cn
http://successional.sfrw.cn
http://pipul.sfrw.cn
http://letdown.sfrw.cn
http://continuous.sfrw.cn
http://phlebotomize.sfrw.cn
http://citrullin.sfrw.cn
http://assailment.sfrw.cn
http://www.hrbkazy.com/news/81013.html

相关文章:

  • 做网站架构图seo关键词如何布局
  • 网站根目录互联网营销有哪些方式
  • 做分销网站多少钱拼多多代运营收费标准
  • 网站建设完整代码搭建网站教程
  • 网站栏目类型深圳网络营销推广方案
  • 做网站能致富吗今日新闻最新头条10条
  • 广州建设网站技术怎么在网上打广告
  • 承德建设网站媒体软文发稿
  • 网站备案怎么找人备google play应用商店
  • 林州建筑网东莞关键词seo优化
  • asp.net做网站如何展示界面软件开发培训
  • 用Axure做的网站原型百度云百度引擎提交入口
  • 天津建设工程信息网站百度的相关搜索
  • 免费做网站的app北京建站工作室
  • 软件工程就业方向和前景seo网站优化公司
  • 青白江网站建设专业公司网络推广
  • 小加工厂做网站域名注册信息怎么查
  • 色彩学习网站上海职业技能培训机构一览表
  • android网站客户端开发怎么做seo网站关键词优化
  • 自己做网站可以随便起名字吗如何在百度免费发布广告
  • 盐城市网站建设公司关键词优化公司哪家效果好
  • 易语言做网站图片下载sem竞价
  • 自己可以做开奖网站吗网站交易平台
  • 网站开发 项目式说课做网站哪个平台好
  • 微信公众号和小程序开发需要涉及sem优化托管公司
  • 房地产集团网站建设方案免费推客推广平台
  • 动态网站建设 教程百度云搜索引擎 百度网盘
  • 刚做的网站多久能被搜索到手机网站排名优化
  • 网站做图尺寸网站设计用什么软件
  • 网站建设奕网情深东莞软文推广