【JavaScript脚本宇宙】图形魔术:探索领先的图像处理库及其独特功能

深入了解HTML5视频:最受欢迎的库及其功能

前言

图像处理是现代数字媒体开发中不可或缺的一部分,从调整图像大小到创建复杂的图形场景。有许多库可用,每个库都有其特定的优点和适用场景。在本文中,我们将探讨六种流行的图像处理库,包括命令行工具和JavaScript库。

欢迎订阅专栏:JavaScript脚本宇宙

文章目录

  • 深入了解HTML5视频:最受欢迎的库及其功能
    • 前言
    • 1. GraphicsMagick:一个用于图像处理的命令行工具
      • 1.1 概述
      • 1.2 特性
        • 1.2.1 高效性
        • 1.2.2 兼容性
      • 1.3 使用示例
      • 1.4 安装与配置
        • 1.4.1 Windows安装
        • 1.4.2 macOS安装
        • 1.4.3 Linux安装
    • 2. ImageMagick:一个用于创建、编辑和合成图像的工具
      • 2.1 概述
      • 2.2 特性
        • 2.2.1 格式转换
        • 2.2.2 图像变换
        • 2.2.3 特殊效果
      • 2.3 使用示例
        • 2.3.1 命令行示例
    • 3. Jimp:纯JavaScript编写的图像处理库
      • 3.1 概述
      • 3.2 安装与使用
        • 3.2.1 安装方法
        • 3.2.2 基本用法
        • 3.2.3 高级配置
      • 3.3 使用示例
        • 3.3.1 加载与保存图像
    • 4. Sharp:高性能Node.js图像处理库
      • 4.1 概述
      • 4.2 特性
        • 4.2.1 高性能
        • 4.2.2 支持多种格式
        • 4.2.3 流操作支持
      • 4.3 使用示例
        • 4.3.1 转换图像格式
    • 5. Fabric.js:基于Canvas的图形库
      • 5.1 概述
      • 5.2 特性
        • 5.2.1 矢量图形支持
        • 5.2.2 对象模型
        • 5.2.3 事件处理
      • 5.3 使用示例
        • 5.3.1 创建基本图形
    • 6. Paper.js:开源矢量绘图库
      • 6.1 概述
      • 6.2 特性
        • 6.2.1 灵活的路径操作
        • 6.2.2 丰富的API
        • 6.2.3 动画支持
    • 总结

1. GraphicsMagick:一个用于图像处理的命令行工具

GraphicsMagick是一个功能强大的图像处理软件,它提供了丰富的命令行工具,可用于执行各种图像操作和转换任务。与传统的GUI图像处理软件相比,GraphicsMagick更加高效、灵活且可自动化,因此在批量处理图像时非常有用。

1.1 概述

GraphicsMagick支持多种常见的图像格式,包括JPEG、PNG、GIF等。它提供了广泛的功能,例如调整图像大小、旋转、裁剪、添加文字、绘制图形等。此外,GraphicsMagick还具备高级的图像合成功能,可以将多个图像合并成一个图像,并提供了丰富的特效和滤镜。

1.2 特性

1.2.1 高效性

GraphicsMagick采用了优化的算法和数据结构,能够快速处理大量的图像数据。无论是在单张图像处理还是批量处理时,它都能提供出色的性能。这使得GraphicsMagick成为大规模图像处理和自动化任务的理想选择。

1.2.2 兼容性

GraphicsMagick支持各种主要的操作系统平台,包括Windows、macOS和Linux,并且与大多数编程语言和脚本环境兼容。这意味着您可以使用任意喜欢的开发工具来集成GraphicsMagick的功能,从而构建出满足特定需求的图像处理解决方案。

1.3 使用示例

以下是一个简单的示例,演示如何使用GraphicsMagick将一张图片转换成黑白模式:

gm convert input.jpg -channel-space Gray output.jpg

在这个示例中,我们使用了gm命令来调用GraphicsMagick。首先,我们指定了输入图像文件为input.jpg。然后,使用-channel-space Gray选项将图像转换成黑白模式。最后,通过output.jpg指定了输出图像的文件名。运行这个命令后,将会生成一张名为output.jpg的黑白图像。

1.4 安装与配置

下面是在不同操作系统上的安装指南:

1.4.1 Windows安装

在Windows上安装GraphicsMagick非常简单。您可以从官方网站(链接)下载预编译的二进制安装程序。下载完成后,按照提示进行安装即可。安装完成后,确保将安装目录添加到系统的PATH环境变量中,以便可以从任何位置调用gm命令。

1.4.2 macOS安装

在macOS上安装GraphicsMagick可以使用Homebrew包管理器。如果您还没有安装Homebrew,请参考其官方文档(链接)进行安装。一旦安装了Homebrew,您可以使用以下命令安装GraphicsMagick:

brew install graphicsmagick

这将在您的系统上安装最新版本的GraphicsMagick。安装完成后,您可以直接在终端中使用gm命令来调用它。

1.4.3 Linux安装

在Linux上安装GraphicsMagick的方法因发行版本而有所不同。对于基于Debian的发行版(如Ubuntu),可以使用以下命令来安装:

sudo apt-get install graphicsmagick

对于基于RedHat的发行版(如CentOS或Fedora),可以使用以下命令来安装:

sudo yum install graphicsmagick

安装完成后,确保将安装目录添加到系统的PATH环境变量中,以便可以从任何位置调用gm命令。

2. ImageMagick:一个用于创建、编辑和合成图像的工具

ImageMagick是一个功能强大的命令行工具,用于处理、创建和转换图像。它在图像处理领域被广泛使用,支持多种文件格式,并提供了许多效果、滤镜和算法来操作图像。

2.1 概述

ImageMagick是一个开源的图像处理软件,它可以在命令行中使用,也可以集成到脚本和编程语言中。它支持超过200种图像格式,包括常见的JPEG、PNG、GIF等格式。ImageMagick可以执行各种任务,如图像裁剪、调整大小、旋转、模糊以及添加文字或水印等。此外,它还支持特殊效果,如图像扭曲、渐变和图案生成等。

2.2 特性

2.2.1 格式转换

ImageMagick可以将图像从一种格式转换为另一种格式。例如,下面的代码将一个PNG图像转换为JPEG格式:

convert input.png output.jpg
2.2.2 图像变换

ImageMagick提供了许多命令来对图像进行变换操作。例如,可以使用resize命令来调整图像的大小,crop命令来裁剪图像的一部分,或者rotate命令来旋转图像。下面是一个示例代码,用于将一个图像调整为200x200像素的大小:

convert input.jpg -resize 200x200 output.jpg
2.2.3 特殊效果

除了基本的图像操作外,ImageMagick还支持许多特殊效果,如模糊、锐化、噪声等。例如,下面的代码将一个图像模糊处理:

convert input.jpg -blur 5x5 output.jpg

2.3 使用示例

2.3.1 命令行示例

ImageMagick可以直接在命令行中使用,以下是一个简单的示例,展示如何将一个图像转换为另一个大小并保存为新文件:

convert input.jpg -resize 400x400 output.jpg

3. Jimp:纯JavaScript编写的图像处理库

Jimp是一个用纯JavaScript实现的图像处理库,它可以在浏览器和Node.js环境中运行。它提供了各种图像处理功能,包括加载、保存、裁剪、缩放、颜色调整等。

3.1 概述

Jimp是一个轻量级的图像处理库,无需依赖其他库或环境,即可直接使用。它支持多种图像格式,如JPEG、PNG、GIF和SVG,并提供了基本的图像操作方法。Jimp还可以进行图像合成操作,将多个图像合并为一个。

3.2 安装与使用

3.2.1 安装方法

要使用Hls.js,你可以在网页中引入相应的JavaScript文件。你可以从官方GitHub仓库下载最新的版本并将其部署到你的服务器上,或者使用CDN来引入。例如:

<script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
3.2.2 基本用法

一旦你成功引入了Hls.js库文件,你可以使用以下代码来初始化一个HLS播放器:

if (Hls.isSupported()) {
  var video = document.getElementById('video');
  var hls = new Hls();
  hls.loadSource(videoSrc);
  hls.attachMedia(video);
  hls.on(Hls.Events.MANIFEST_PARSED, function () {
    video.play();
  });
} else {
  // HLS is not supported on this browser
}

这段代码首先检查当前浏览器是否支持HLS,如果支持则创建一个新的Hls实例并加载视频源。接下来,将HLS实例与视频元素关联起来并开始播放视频。最后,当视频的 manifest 被解析完成后执行一些额外的操作。

3.2.3 高级配置

除了基本的用法之外,Hls.js还提供了一些高级配置选项,例如带宽估计、缓冲区大小等等。你可以根据具体的需求进行相应的配置。例如:

var config = {
  enableWorker: true, // default is true, but you can disable it if needed
  maxBufferLength: 30, // maximum buffer length in seconds
  maxMaxBufferLength: 60, // maximum maximum buffer length in seconds
};
var hls = new Hls(config);

上面的代码展示了如何进行一些常见的高级配置。你可以根据自己的需求添加更多的配置参数。

3.3 使用示例

下面是一些使用Jimp进行图像处理的示例代码:

3.3.1 加载与保存图像
const Jimp = require('jimp');

// 加载图像
Jimp.read('image.png', (err, image) => {
    if (err) throw err;
    // 保存图像为新文件
    image.write('new-image.png', (err) => {
        if (err) throw err;
        console.log('Image saved successfully!');
    });
});

4. Sharp:高性能Node.js图像处理库

4.1 概述

Sharp是一个基于Libvips的高性能Node.js图像处理库,它的设计目标是快速、灵活并且易于使用。Sharp提供了各种功能强大的API,可以用于调整图像大小、旋转、裁剪、加水印等操作。

4.2 特性

4.2.1 高性能

Sharp借助Libvips的强大功能,在处理图像时比其他图像处理库更加高效。它使用了异步I/O和非阻塞算法,可以充分利用多核CPU的优势,提高图像处理速度。

4.2.2 支持多种格式

Sharp支持多种常见的图像格式,包括JPEG、PNG、GIF、SVG和TIFF等。无论是读取还是导出图像,Sharp都可以自动处理这些格式,无需额外的编码或解码操作。

4.2.3 流操作支持

Sharp完全支持流操作,可以使用流来处理大型图像文件而不会占用过多的内存空间。这使得Sharp在处理Web应用中的图像请求时非常方便。

4.3 使用示例

下面我们通过几个实例来演示如何使用Sharp进行基本的图像处理操作。

4.3.1 转换图像格式
const fs = require('fs');
const sharp = require('sharp');

// 读取一个PNG图像并保存为JPEG格式
fs.readFile('input.png', (err, data) => {
    sharp(data)
        .jpeg() // 转换为JPEG格式
        .toFile('output.jpg', (err, info) => {
            console.log(info);
        });
});

5. Fabric.js:基于Canvas的图形库

Fabric.js是一个基于JavaScript的轻量级图形库,使用HTML5 Canvas。它提供了一组强大的图形对象和工具,用于创建复杂的图像和图形。Fabric.js支持多种图形类型,包括路径、矩形、椭圆、线和文本等。它还具有丰富的事件处理功能,使您可以轻松地为图形添加交互性。

5.1 概述

Fabric.js是基于HTML5 Canvas的一款轻量级的图形库,致力于简化基于Canvas的图形绘制和处理,提供易于使用且功能丰富API的同时,能够满足各种复杂的图形绘制需求。Fabric.js既可以作为独立插件引用,也可以与其他JavaScript库(如jQuery)结合使用。

5.2 特性

5.2.1 矢量图形支持

Fabric.js支持矢量图形,这使得它可以缩放到任意大小而不会损失质量。您可以使用Fabric.js创建复杂的图形和图像,这些图形和图像可以缩放到不同的设备和分辨率上。

5.2.2 对象模型

Fabric.js具有强大的对象模型,使得可以轻松地对图像进行操作和管理。每个图形对象都是一个单独的对象,具有自己的属性和方法。您可以对这些对象进行分组、层叠和变换等操作。

5.2.3 事件处理

Fabric.js还具有丰富的事件处理功能,使得可以轻松地为图形添加交互性。您可以为图形对象添加事件监听器,以便在用户与之交互时执行特定的操作。例如,您可以在用户单击某个图形时显示提示信息或更改其颜色。

5.3 使用示例

以下是一些使用Fabric.js创建基本图形并添加交互的示例。

5.3.1 创建基本图形
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Fabric.js - Basic Shapes</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/4.6.0/fabric.min.js"></script>
  </head>
  <body>
    <canvas id="canvas" width="600" height="400"></canvas>
    <script>
      // 获取画布元素并初始化Fabric对象
      const canvas = new fabric.StaticCanvas('canvas');
      // 创建一个红色的矩形并添加到画布上
      const rect = new fabric.Rect({
        left: 50,
        top: 50,
        width: 100,
        height: 50,
        fill: 'red',
      });
      canvas.add(rect);
      // 创建一个蓝色的圆并添加到画布上
      const circle = new fabric.Circle({
        left: 200,
        top: 100,
        radius: 50,
        fill: 'blue',
      });
      canvas.add(circle);
      // 创建一个黄色的三角形并添加到画布上
      const triangle = new fabric.Polygon([{ x: 100, y: 25 }, { x: 220, y: 25 }, { x: 160, y: 60 }], { fill: 'yellow' });
      canvas.add(triangle);
      // 将所有对象渲染到画布上
      canvas.renderAll();
    </script>
  </body>
</html>

6. Paper.js:开源矢量绘图库

Paper.js 是一个强大的开源矢量绘图库,它提供了灵活的路径操作、丰富的 API 和动画支持等特性。下面将详细介绍 Paper.js 的概述、特性、使用示例以及安装与配置方法。

6.1 概述

Paper.js 是一个 JavaScript 库,用于在 canvas 或 SVG 中创建、操作和变换矢量图形。它提供了类似于 Adobe Illustrator 等矢量绘图工具的功能,同时还具备非常好的浏览器兼容性和性能表现。

Paper.js 的主要特点包括:

  • 灵活的路径操作,可以创建复杂的形状和复杂的路径效果。
  • 丰富的 API,提供了许多实用的工具和函数来简化矢量图形的处理。
  • 动画支持,可以轻松地为矢量图形添加动画效果。

6.2 特性

6.2.1 灵活的路径操作

Paper.js 的强大之处在于它提供的灵活的路径操作功能。通过 Paper.js,你可以创建各种复杂的形状和路径效果,例如多边形、曲线、弧线等。同时,Paper.js 还提供了丰富的方法来操作这些路径,例如缩放、旋转、平移、扭曲等。

以下是一个简单的示例,演示如何使用 Paper.js 创建一个正方形:

// 创建一个正方形路径
var square = new paper.Path.Rectangle({
  point: [50, 50], // 正方形左上角坐标
  size: [100, 100] // 正方形大小
});
6.2.2 丰富的API

Paper.js 提供了丰富的 API,可以帮助你更方便地处理和操作矢量图形。例如,你可以使用 Paper.js 的 API 来绘制文字、图像、渐变填充等。

以下是一个示例,演示如何使用 Paper.js 绘制一段文字:

// 创建一个画布
var canvas = document.getElementById('myCanvas');
paper.setup(canvas); // 初始化 Paper.js

// 创建一个文本对象
var text = new paper.PointText({
  point: [50, 50], // 文本左上角坐标
  content: 'Hello, World!' // 文本内容
});
6.2.3 动画支持

Paper.js 还具备非常好的动画支持,可以轻松地为矢量图形添加动画效果。通过 Paper.js 的动画模块,你可以创建各种复杂的动画效果,例如移动、缩放、旋转等。

以下是一个示例,演示如何使用 Paper.js 创建一个简单的动画效果:

// 创建一个画布
var canvas = document.getElementById('myCanvas');
paper.setup(canvas); // 初始化 Paper.js

// 创建一个圆对象
var circle = new paper.Path.Circle({
  center: [50, 50], // 圆心坐标
  radius: 25 // 圆半径
});
circle.fillColor = 'red'; // 设置填充颜色为红色

// 创建一个动画效果,让圆沿着顺时针方向旋转一周
var animation = new paper.Animation({
  duration: 2000, // 动画持续时间为2秒
  onFrame: function(event) { // 动画帧回调函数
    circle.rotation += Math.PI/180 * 5; // 圆的旋转角度增加5度
    this.frame++; // 当前帧数加1
    if (this.frame >= this.total) { // 如果当前帧数等于总帧数,则停止动画循环
      animation.stop();
    }
  }
});
animation.start(); // 启动动画循环

总结

在选择HTML5视频库时,开发人员可以根据项目需求考虑不同的因素,如支持的视频格式、浏览器兼容性、自定义选项等。这些库提供了丰富的功能和灵活性,可以帮助开发人员轻松地实现视频播放功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/744892.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

cJSON源码解析之add_item_to_object函数

文章目录 前言add_item_to_object函数是干什么的add_item_to_object代码解析函数实现函数原理解析开头的代码constant_key参数的作用最后的if判断 add_item_to_array函数 总结 前言 在我们的日常编程中&#xff0c;JSON已经成为了一种非常常见的数据交换格式。在C语言中&#…

[深度学习] 卷积神经网络CNN

卷积神经网络&#xff08;Convolutional Neural Network, CNN&#xff09;是一种专门用于处理数据具有类似网格结构的神经网络&#xff0c;最常用于图像数据处理。 一、CNN的详细过程&#xff1a; 1. 输入层 输入层接收原始数据&#xff0c;例如一张图像&#xff0c;它可以被…

Qt 实战(6)事件 | 6.1、事件机制

文章目录 一、事件1、基本概念2、事件描述3、事件循环4、事件分发4.1、QApplication::notify()4.2、QObject::event() 5、事件传递6、事件处理器 前言&#xff1a; Qt 框架中的事件机制&#xff08;Event Mechanism&#xff09;是一种核心功能&#xff0c;它允许应用程序以事件…

【Launcher3】解决谷歌桌面的小部件重启后消失问题

1-问题摘要 这次主要解决困扰了我很久的时钟消失问题&#xff0c;大概是去年10月刚开始做EDLA项目的时候&#xff0c;需要定制谷歌桌面&#xff0c;桌面布局大概要改成这样&#xff1a; 时间显示在谷歌搜索框的上方,而安卓原生桌面大概是这样子的 我们开发一开始是使用小部件…

微服务+云原生:打造高效、灵活的分布式系统

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《未来已来&#xff1a;云原生之旅》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、云原生概述 2、微服务概述 二、微服务架构基础 1、…

二、反应式集成-spring

一、Spring WebFlux what 1、简介 - Spring WebFlux 包含一个用于执行 HTTP 请求的客户端。 有一个 基于 Reactor 的功能性、流畅的 API&#xff0c;请参阅 Reactive Libraries&#xff0c; 它支持异步逻辑的声明性组合&#xff0c;而无需处理 线程或并发。它是完全无阻塞的…

Talking Web

1. curl 1.1 http curl http://127.0.0.1:80 向目标主机端口发送http请求 1.2 httphead curl -H “Host: 18ed3df584cd48328b5839443aa7b42b” http://127.0.0.1:80 1.3 httppath curl http://127.0.0.1:80/853c64cd218f80d0a59665666fb2ab80 1.4 URL编码路径 &#xff0…

Python学习笔记21:进阶篇(十)常见标准库使用之math模块,random模块和statistics模块

前言 本文是根据python官方教程中标准库模块的介绍&#xff0c;自己查询资料并整理&#xff0c;编写代码示例做出的学习笔记。 根据模块知识&#xff0c;一次讲解单个或者多个模块的内容。 教程链接&#xff1a;https://docs.python.org/zh-cn/3/tutorial/index.html 数学 P…

微软结束将数据中心置于海底的实验

2016 年&#xff0c;微软 宣布了一项名为"纳蒂克项目"&#xff08;Project Natick&#xff09;的实验。基本而言&#xff0c;该项目旨在了解数据中心能否在海洋水下安装和运行。经过多次较小规模的测试运行后&#xff0c;该公司于 2018 年春季在苏格兰海岸外 117 英尺…

从0开始C++(八):多态的实现

相关文章&#xff1a; 从0开始C&#xff08;一&#xff09;&#xff1a;从C到C 从0开始C&#xff08;二&#xff09;&#xff1a;类、对象、封装 从0开始C&#xff08;三&#xff09;&#xff1a;构造函数与析构函数详解 从0开始C&#xff08;四&#xff09;&#xff1a;作…

React+TS前台项目实战(十九)-- 全局Input组件封装:加载状态和清除功能的实现

文章目录 前言Input组件1. 功能分析2. 代码详细注释3. 使用方式4. 效果展示 总结 前言 今天我们来封装一个input输入框组件&#xff0c;并提供一些常用的功能&#xff0c;你可以选择不同的 尺寸、添加前缀、显示加载状态、触发回调函数、自定义样式 等等。这些功能在这个项目中…

vite+vue3+ts项目搭建流程 (pnpm, eslint, prettier, stylint, husky,commitlint )

vitevue3ts项目搭建 项目搭建项目目录结构 项目配置自动打开项目eslint①vue3环境代码校验插件②修改.eslintrc.cjs配置文件③.eslintignore忽略文件④运行脚本 prettier①安装依赖包②.prettierrc添加规则③.prettierignore忽略文件④运行脚本 stylint①.stylelintrc.cjs配置文…

【云原生】Kubernetes网络知识

Kubernetes网络管理 文章目录 Kubernetes网络管理一、案例概述二、案例前置知识点2.1、Kubernetes网络模型2.2、Docker网络基础2.3、Kubernetes网络通信2.3.1、Pod内容器与内容之间的通信2.3.2、Pod与Pod之间的通信 2.4、Flannel网络插件2.5、Calico网络插件2.5.1、Calico网络模…

免费下载电子书的网站

在如今的数字化时代&#xff0c;电子书已成为许多人书籍阅读的首选。下面小编就和大家分享一些提供免费查找下载电子书服务的网站&#xff0c;这些网站不仅资源丰富&#xff0c;而且操作简便。 免费下载电子书的网站&#xff1a;https://www.bgrdh.com/favorites/1355.html 1…

数据可视化期末考试(编程)

1.KNN 1.新增数据的分类 import pandas as pd # 您的原始数据字典 data { 电影名称: [电影1, 电影2, 电影3, 电影4, 电影5], 打斗镜头: [10, 5, 108, 115, 20], 接吻镜头: [110, 89, 5, 8, 200], 电影类型: [爱情片, 爱情片, 动作片, 动作片, 爱情片] } …

昇思25天学习打卡营第8天 | 模型的保存与加载

内容介绍&#xff1a;在训练网络模型的过程中&#xff0c;实际上我们希望保存中间和最后的结果&#xff0c;用于微调&#xff08;fine-tune&#xff09;和后续的模型推理与部署&#xff0c;本章节我们将介绍如何保存与加载模型。 具体内容&#xff1a; 1. 导包 import numpy…

1.1 MySQL用户管理

1.1.1 用户的定义 用户名主机域 mysql> select user,host,password from mysql.user; --------------------------------------------------------------- | user | host | password | -----------------------------------------…

el-form重置后input无法输入问题

新增用户遇到的问题&#xff1a; 如果你没有为 formData 设置默认值&#xff0c;而只是将其初始化为空对象 {}&#xff0c;则在打开dialog时&#xff0c;正常输入&#xff0c; formdata会变成如下 但是&#xff0c;打开后&#xff0c;直接使用 resetFields 或直接清空表单&…

LLDB 详解

LLDB 详解 LLDB 详解编译器集成优势LLDB 的主要功能命令格式原始&#xff08;raw&#xff09;命令选项终止符: -- LLDB 中的变量唯一匹配原则helpexpressionprint、call、po控制流程&#xff1a;continue、next、step、finishregister read / writethread backtracethread retu…

基于weixin小程序新生报到系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;学生管理&#xff0c;班级信息管理&#xff0c;师资力量管理&#xff0c;宿舍信息管理&#xff0c;宿舍安排管理&#xff0c;签到信息管理&#xff0c;论坛管理 小程序功能包括&#xff1a;系统首页&am…