首页 > 编程语言 >Taro微信小程序--压缩图片组件

Taro微信小程序--压缩图片组件

时间:2024-04-06 10:04:42浏览次数:30  
标签:const -- 微信 压缩 组件 Taro imageUrl 图片

图片压缩组件

ImageCompress 组件用于在Taro微信小程序中对图片进行压缩,以提高性能和优化加载。该组件利用了 Taro 框架来实现图片压缩功能。

1,用法

  • 在页面导入ImageCompress组件。
import ImageCompress from 'path/to/ImageCompress';
  • 传入指定参数
 <ImageCompress
   imageUrl="imgsrc"
   maxSize={1024}  // 压缩阈值大小
   pwidth={800}     // 压缩图像宽度
   pheight={80}     // 压缩图像高度
   imgStyle={{ width: '100%', height: 'auto' }}
 />
  • 组件会根据指定的参数自动压缩所提供的图像。

2,参数

  • imageUrl (string): 需要进行压缩的图片URL。
  • maxSize (number): 最大文件大小阈值。如果图像超过此大小,将被压缩。
  • pwidth (number): 图片压缩后的宽度。
  • pheight (number): 图片压缩后的高度。
  • imgStyle (object): Image组件的 CSS 样式。

注意:
只有图像超过 maxSize才会进行压缩。
压缩后的图片将替换 Image原始图像。

3,代码实现

import React, { Component } from 'react';
import Taro from '@tarojs/taro';
import {Image} from '@tarojs/components'

class ImageCompress extends Component {
  constructor(props) {
    super(props);
    this.state = {
      compressedImageUrl: null // 压缩后的图片地址
    };
  }

  componentDidMount() {
  }

  componentWillReceiveProps(){
    // 组件接收到新的props时执行的操作
    const { imageUrl, maxSize, pwidth, pheight } = this.props;
    if (imageUrl) {
      // 如果传入了图片地址,则进行图片压缩处理
      this.compressImage(imageUrl, maxSize, pwidth, pheight);
    }
  }

  compressImage = async (imageUrl, maxSize, pwidth, pheight) => {
    try {
      // 下载图片
      const res = await Taro.downloadFile({ url: imageUrl });
      const tempFilePath = res.tempFilePath;
      // 获取图片文件信息
      const { size } = await Taro.getFileInfo({ filePath: tempFilePath });
      if (size > maxSize) {
        // 如果图片大小超过指定的最大尺寸,则进行压缩
        const compressedFile = await Taro.compressImage({
          src: tempFilePath,
          compressedWidth: pwidth || 80, // 压缩后的宽度,默认为80
          quality: pheight || 80, // 压缩质量,默认为80
        });

        this.setState({ compressedImageUrl: compressedFile.tempFilePath }); // 设置压缩后的图片地址
      } else {
        // 如果图片大小未超过指定的最大尺寸,则直接使用原图
        this.setState({ compressedImageUrl: imageUrl }); // 设置原图地址
      }
    } catch (error) {
      console.error('Error compressing image:', error); // 打印压缩图片时出现的错误
    }
  }

  render() {
    const { compressedImageUrl } = this.state;
    const { imgStyle = '' } = this.props;

    return (
      <Image
        style={imgStyle}
        src={compressedImageUrl}
        alt='img'
      />
    );
  }
}

export default ImageCompress;

标签:const,--,微信,压缩,组件,Taro,imageUrl,图片
From: https://blog.csdn.net/Rayae/article/details/137338458

相关文章

  • 超强AI辅助工具:BitoCLI的简单使用
    今天要推荐一个爱不释手的好东西–Bito;从事相关工作的人大概率在自己的代码编辑器中已经用上了Bito的插件版本,所以这里主要介绍的是一个适合与所有人且方便快捷的BitoCLI,也就是Bito的命令行版本。BitoCLI从官方介绍来看,这是一款为BitoAI聊天功能提供命令行界面。CL......
  • B/S架构SaaS模式 医院云HIS系统源码,自主研发,支持电子病历4级
    B/S架构SaaS模式医院云HIS系统源码,自主研发,支持电子病历4级系统概述:一款满足基层医院各类业务需要的云HIS系统。该系统能帮助基层医院完成日常各类业务,提供病患挂号支持、病患问诊、电子病历、开药发药、会员管理、统计查询、医生站和护士站等一系列常规功能,还能与公卫、PAC......
  • 结构体+排序——OpenJudge 1.10 07:合影效果
    描述小云和朋友们去爬香山,为美丽的景色所陶醉,想合影留念。如果他们站成一排,男生全部在左(从拍照者的角度),并按照从矮到高的顺序从左到右排,女生全部在右,并按照从高到矮的顺序从左到右排,请问他们合影的效果是什么样的(所有人的身高都不同)?输入第一行是人数n(2<=n<=40,且至少有1......
  • 练手项目层初阶1—《详解静态版本——通讯录管理系统》
    文章目录......
  • 0189期基于深度学习的遥感船舶和飞机识别-含数据集
    代码下载和视频演示地址:0189期基于深度学习的遥感船舶和飞机识别_哔哩哔哩_bilibili本代码是基于pythonpytorch环境安装的。下载本代码后,有个环境安装的requirement.txt文本数据集介绍,下载本资源后,界面如下:数据集文件夹存放了本次识别的各个类别图片。本代码对数据集......
  • 0190期基于深度学习识别是否有火焰-含数据集-含数据集
    代码下载和视频演示地址:0190期基于深度学习识别是否有火焰-含数据集_哔哩哔哩_bilibili本代码是基于pythonpytorch环境安装的。下载本代码后,有个环境安装的requirement.txt文本数据集介绍,下载本资源后,界面如下:数据集文件夹存放了本次识别的各个类别图片。本代码对数......
  • Flask的原生WebSocket(flask-sockets)与封装SocketIO
    Flask:使用SocketIO实现WebSocket与前端Vue进行实时推送(gevent-websocket、flask-socketio、flask不出现runningon127..问题) Flask:使用SocketIO实现WebSocket与前端Vue进行实时推送(gevent-websocket、flask-socketio、flask不出现runningon127..问题) 精选 原创......
  • 0193期通过CNN-pytorch训练识别苹果树叶病害识别-含数据集-含数据集
    代码下载和视频演示地址:0193期通过CNN-pytorch训练识别苹果树叶病害识别-含数据集_哔哩哔哩_bilibili本代码是基于pythonpytorch环境安装的。下载本代码后,有个环境安装的requirement.txt文本数据集介绍,下载本资源后,界面如下:数据集文件夹存放了本次识别的各个类别图片......
  • Win11系统提示找不到AppVEntSubsystemController.dll
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个AppVEntSubsystemController.dll文件(挑选合......
  • Win11系统提示找不到AppVManifest.dll文件的解决办法
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个AppVManifest.dll文件(挑选合适的版本文件)......