你的浏览器无法正常显示内容,请更换或升级浏览器!

NUXT3自动下发不同宽高图片缩略图组件。

tenfei
tenfei
发布于2023-10-17 15:42 阅读858次
NUXT3自动下发不同宽高图片缩略图组件。
NUXT3下使用sharp图像处理组件,按照客户端需要图片大小读取上传的图片并以文件流形式下发到客户端,可省略掉上传时需要缩略图,且可满足客户端对图片的各种大小的缩略图需求,也可节省请求次数和流量。亦可加入限制和请求访问TOKEN过滤掉跨站请求图片。
NUXT3下读取上传的图片并以文件流形式下发到客户端,使用了nodejs下sharp图像处理组件,可根据客户端传入size参数自动缩小图片,可省略掉上传时需要缩略图,且可满足客户端对图片的各种大小的缩略图需求,需求多大的缩略图直接带入参数就行了,建议以50 100 200这样制定缩略图大小,以便客户端更好的缓存,也可节省请求。当然也可加入其它访问限制代码,以阻止三方跨域访问图片。 在NUXT3下建立/server/router/image/[…slug].ts 复制以下代码,请求时直接请求/images/图片名称.jpg?size=需求图片大小 ``` import sharp from 'sharp'; export default defineEventHandler(async e => {     let size=getQuery(e).s;     if(isNaN(size)||parseInt(size)<=0||parseInt(size)>最大图片宽或高) size=最大图片宽或高;     size=parseInt(size);     const fileName =图片上传路径根目录名+'/'+e.context.params.slug;     //sharp直接输出stream     return sendStream(e,sharp(fileName).resize(size,size,{withoutEnlargement:true,fit:'inside'}).toFormat('jpeg')); }); ```

3

0

文章点评
tenfei
1楼 1年前
可加入Last-modify文件最后修改日期,需要gmt时间格式,即可实现客户端缓存。
Copyright © from 2021 by namoer.com
458815@qq.com QQ:458815
蜀ICP备2022020274号-2