第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

【金秋打卡】第24天 sharp 完成圖片縮放處理

標(biāo)簽:
Node.js

课程名称web前端架构师
课程章节:第17周 第二章 文件上传基本原理实现以及使用sharp 完成图片处理
主讲老师:张轩
课程内容:sharp 完成图片缩放处理

图片处理库sharp

之前我们完成了图片的上传的功能,但是当我们上传的图片很大时,需要使用缩略图

我们可以使用 sharp 来帮助我们来处理图片。sharp 官网地址 https://sharp.pixelplumbing.com/

npm i sharp
sharp(input)
  .resize({ width: 100 })

使用 sharp 完成图片处理

public async upload() {
  const { ctx, app } = this;
  const file = ctx.request.files[0];
  const url = file.filepath.replace(app.config.baseDir, app.config.baseURL);

  // 生成缩略图
  const image = sharp(file.filepath);
  const metaData = await image.metadata();
  let thumbnailUrl = ''; // 缩略图地址
  if (metaData.width && metaData.width > 300) {
    const { name, ext, dir } = path.parse(file.filepath);
    // 设置缩略图的路径
    const thumbnailPath = path.join(dir, `${name}-thumbnail.${ext}`); 
    await image.resize({ width: 300 }).toFile(thumbnailPath);
    thumbnailUrl = thumbnailPath.replace(app.config.baseDir, app.config.baseURL);
  }
  ctx.helper.success({ ctx, res: {
    url,
    thumbnailUrl: thumbnailUrl ? thumbnailUrl : url,
  } });
}

流(Stream) 的基础知识

Stream 的官方文档:https://nodejs.org/api/stream.html

流是 Node.js 中最好,也是最容易误解的概念

流就是数据的合集,数据可以是字符串也可以是数组,流的数据不是一次性全部获得的

import fs from 'fs'

// 一次性读取文件的所有内容
fs.readFile('./1.log')

// 一边读一遍输出
fs.createReadStream('./1.log')

流的基本特性

流的类型

  • Readable - 可读操作。
  • Writable - 可写操作。
  • Duplex - 可读可写操作.
  • Transform - 操作被写入数据,然后读出结果。

我们要一个文件的内容写入到另一个文件中

import fs from 'fs'

const readStream = fs.createReadStream('./old.log')
const writeStream = fs.createWriteStream('./new.log')
readStream.pipe(writeStream)

如果我们使用过 gulp, 就会将成使用 pipe 这个方法

流基于 EventEmitter,常见的事件有

  • data - 当有数据可读时触发。
  • end - 没有更多的数据可读时触发。
  • error - 在接收和写入过程中发生错误时触发。
  • finish - 所有数据已被写入到底层系统时触发。

其实之前的 pipe 就相当于

readStream.on('data', chunk => {
  writeStream.write(chunk)
})
readStream.on('end', () => {
  writeStream.end()
})

图片描述

點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學(xué)

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消