js图片压缩(vue)

本文介绍了在Vue项目中如何使用JavaScript进行前端图片压缩的方法,包括两种不同的实现方式,适用于前端图片上传前的大小控制。
摘要由CSDN通过智能技术生成

前端压缩图片js方法(vue调用)

1.方法一:
入参input 文件

  imgPreview (file, type) {
      const self = this
      // 看支持不支持FileReader
      console.log('start-imgPreview')
      if (!file || !window.FileReader) return
      const reader = new FileReader()
      // 将图片2将转成 base64 格式
      reader.readAsDataURL(this.dataURItoBlob(file.content))
      // 读取成功后的回调
      reader.onloadend = function () {
        // 此处的this是reader
        const result = this.result
        const img = new Image()
        // console.log(result,'2222222222222')
        img.src = result
        // 判断图片是否大于500K,是就直接上传,反之压缩图片
        if (this.result.length <= 500 * 1024) {
          file.content = result
        } else {
          img.onload = function () {
            const data = self.compress(img)
            file.content = data
            const fileObject = {
              content: 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在iOS应用中集成Vue.js框架并处理图片压缩通常涉及到前端数据处理、图片资源管理以及后端服务器配合等几个方面。 ### iOS Vue项目中图片压缩的基本程: #### 1. **前端图片加载与显示** 使用Vue.js进行前端开发时,可以利用`axios`或`fetch`API来进行网络请求获取图片数据,并将图片展示到页面上。Vue.js框架本身并不直接负责图片压缩,而是用于构建交互式的用户界面。 #### 2. **图片压缩策略** - **懒加载**:只加载当前视图可见的图片,其他图片可以延迟加载甚至异步下载。通过配置Vue的`<img>`标签的`lazy="true"`属性实现基本的懒加载功能,进一步可以自定义懒加载的逻辑。 - **按需调整大小**:可以根据设备屏幕尺寸动态调整图片宽度,避免高分辨率设备显示过大的图片占用不必要的带宽和内存空间。 - **内容感知缩放**:对于高质量图片,可以采用更智能的方式如使用WebP或其他支持的内容感知缩放技术,基于图片内容自动选择合适的压缩比例和质量。 #### 3. **服务端图片优化** 对于服务器端的图片存储和分发,可以考虑将原始大图转换成多个版本,包括低分辨率的预览图和适配不同场景的图片。这可以通过服务器端的图片处理库实现,比如使用AWS S3自带的图像处理工具、Firebase Cloud Functions 或者搭建自己的图片处理微服务(例如使用Node.js和Sharp、Python和PIL等库)。 #### 4. **客户端缓存策略** 利用浏览器的缓存机制,对于经常访问的图片,通过设置适当的Cache-Control头信息,可以让浏览器缓存图片减少再次加载的时间。同时,可以使用CDN服务加速图片的全球分发,提高用户体验。 ### 实现步骤示例: 假设您正在使用Express作为后端服务器: ```javascript const express = require('express'); const multer = require('multer'); const sharp = require('sharp'); const app = express(); const upload = multer({ dest: 'uploads/' }); app.post('/upload', upload.single('image'), async (req, res) => { try { const imageBuffer = await sharp(req.file.path) .resize(800) // 自动保持纵横比 .jpeg({ quality: 50 }) // 设置JPEG的质量,从0(完全压缩)到100(无损) .toFile(`compressed/${req.file.filename}`); fs.unlinkSync(req.file.path); // 删除原文件 res.status(200).send({ success: true, message: 'Image compression successful', compressedImagePath: `/compressed/${req.file.filename}` }); } catch (error) { console.error(error); res.status(500).send({ error: 'Failed to compress the image' }); } }); app.listen(3000, () => console.log('Server is running on port 3000')); ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值