首页 > 编程语言 >修改图片的DPI为300,图片格式转换成jpg,nodejs脚本

修改图片的DPI为300,图片格式转换成jpg,nodejs脚本

时间:2024-09-30 15:13:45浏览次数:6  
标签:fs const nodejs 300 图片格式 jpg fileName exiftool inputURL

// 用sharp转换图片格式
const Sharp = require('sharp');
// 引入fs库用于文件操作
const fs = require('fs');
// 引入path库用于处理文件路径
const path = require('path');

// 引入exiftool库用于处理图片元数据
const exiftool = require('exiftool-vendored').exiftool
// 获取目标文件夹images-input内所有图片名称
const inputURL = './images-input'
// 定义输出文件夹路径
const outputURL = './images-output'
// 获取目标文件夹images-input内所有图片名称
const imageNames = fs.readdirSync(inputURL);

// 删除输出文件夹及其内容
fs.rmSync(outputURL, { recursive: true, force: true });
// 创建输出文件夹
fs.mkdirSync(outputURL);
// 定义图片格式转换函数
async function translate(inputURL, fileName) {
  // 获取文件名(不包含扩展名)
  const fileNamePure = fileName.split(".")[0]
  // 使用exiftool库修改图片的DPI为300
  await exiftool.write(`${inputURL}/${fileName}`, {
    XResolution: 300,
    YResolution: 300,
    ResolutionUnit: 'inches'
  });
  // 使用sharp库将图片转换为jpg格式并保存到输出文件夹中
  await Sharp(`${inputURL}/${fileName}`).toFormat('jpg').toFile(`${outputURL}/${fileNamePure}.jpg`);
  console.log('本次结束', '--------------33333');
}
// 对每个图片文件调用转换函数
for (const fileName of imageNames) {
  const imageFormats = /\.(jpg|jpeg|png|gif|bmp)$/i;
  if (imageFormats.test(fileName)) {
    translate(inputURL, fileName);
  }
}

标签:fs,const,nodejs,300,图片格式,jpg,fileName,exiftool,inputURL
From: https://www.cnblogs.com/mengqc1995/p/18441876

相关文章

  • 基于nodejs+vue学生管理平台[开题+源码+程序+论文]计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,教育领域正经历着深刻的变革。传统的学生管理方式逐渐暴露出效率低下、信息孤岛等问题,难以满足现代教育的需求。在这个背景下,开发一......
  • 基于nodejs+vue学生活动申报管理系统[开题+源码+程序+论文]计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景在当今信息化高速发展的时代,高校作为人才培养和知识创新的重要基地,其学生活动的组织与管理显得尤为重要。传统的学生活动申报流程繁琐、效率低下,且容易因信......
  • 基于nodejs+vue学生健康管理系统[开题+源码+程序+论文]计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景在当今社会,随着教育竞争的加剧和生活节奏的加快,学生的身心健康问题日益凸显,成为社会关注的焦点。传统的学生健康管理方式大多依赖于纸质记录和人工统计,不仅......
  • 基于nodejs+vue学生健康信息填报网站[开题+源码+程序+论文]计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景在信息化高速发展的今天,教育领域也逐渐向数字化、智能化转型。学生的健康信息作为学校日常管理的重要组成部分,其准确性和时效性对于学校的健康管理工作至关......
  • nodejs koa 用knex.js链接mysql数据库,进行数据增删改查
    1、knex.js安装npminstallknex官方Installation|Knex.js中文文档|Knex.js中文网2、进行数据库链接constknex=require('knex')({client:'mysql2',connection:{host:'127.0.0.1',//地址user:'root',//账号......
  • [数据集][目标检测]手枪检测数据集VOC+YOLO格式3000张1类别
    数据集格式:PascalVOC格式+YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)图片数量(jpg文件个数):3000标注数量(xml文件个数):3000标注数量(txt文件个数):3000标注类别数:1标注类别名称:["shouqiang"]每个类别标注的框数:shouqiang......
  • nodejs
    IntroductionForNodejsbaseonv8engine,andsignalthread,andasynconousI/O.基于v8,性能出色单线程,没有线程开销,没有多线程相关的复杂的问题(锁,池等,thesourceofbug.),隐藏了,其实node自己本身底层的实现有多线程池,只是上层不必考虑.异步I/O,不会浪费cpu等......
  • nodejs学习
    nodejs中的v8引擎模块一、promise钩子模块;二、垃圾回收模块;1、promise钩子包括:(1)onInit(callback)在promise创建时调用;(2)onSettled(callback)在fulfilled或rejected时调用;(3)onBefore(callback)在promise继续执行之前调用的回调;(4)onAfter(callback)在promise继续执行之后调......
  • 河南移动:核心营业系统稳定运行超300天,数据库分布式升级实践|OceanBase案例
    河南移动,作为电信全业务运营企业,不仅拥有庞大的客户群体和业务规模,还引领着业务产品与服务体系的创新发展。河南移动的原有核心营业系统承载着超过6000万的庞大用户量,管理着超过80TB的海量数据,因此也面临着数据规模急剧扩张与业务连续性要求高的双重挑战,对数据库的分布式升级......
  • FNCE30003 International Finance
    FNCE30003InternationalFinanceGroupAssignment2024Semester 2Details:1.Thisassignmentconstitutes 15%of yourfinal grade.2.Thisassignmentincludestwo files:●   thispdf assignmentinstructionfile,and●  theExcel filecontaining......