展开菜单
首页 精品内容 本月促销 装机必备 Windows PDF教程 macOS软件 IOS软件 Android AI 专题
全部分类

当前位置:

首页 > 编程开发 > Windows环境下Docker部署YOLOv8并集成Spring Boot的完整步骤记录

Windows环境下Docker部署YOLOv8并集成Spring Boot的完整步骤记录

Windows 11
Windows 11

Windows 11 是微软全新操作系统,现代化界面,流畅操作体验,适用于学习、工作与日常生活。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

¥159
Windows 2026-08-22
正版软件 Windows 操作系统 Windows 11 Windows下载
立即下载

前言 说起AI目标检测,YOLO系列模型绝对是绕不开的存在——高效、精准,堪称领域内的标杆。而Spring Boot作为Java生态里最流行的Web开发框架,天然适合把YOLO的检测能力封装成可复用的接口。这篇文章会把Windows环境下,通过Docker部署YOLOv8并集成到Spring Boo

本文目录

    前言

    说起AI目标检测,YOLO系列模型绝对是绕不开的存在——高效、精准,堪称领域内的标杆。而Spring Boot作为Java生态里最流行的Web开发框架,天然适合把YOLO的检测能力封装成可复用的接口。这篇文章会把Windows环境下,通过Docker部署YOLOv8并集成到Spring Boot项目的完整流程走一遍,从环境准备、问题排查到代码集成、接口测试,每个环节都给出实操步骤和解决方案。适合有一定Java和Docker基础的开发者阅读。

    Windows环境下Docker部署YOLOv8并集成Spring Boot的完整步骤记录

    一、前言:为什么选择 Docker + Spring Boot + YOLOv8?

    在本地部署YOLO模型时,环境依赖复杂、版本冲突、跨平台兼容性差这些头疼的问题几乎人人都会遇到。而Docker恰好能一揽子解决——通过容器化封装YOLO运行所需的所有依赖,实现“一次构建,到处运行”。

    再结合Spring Boot的优势,我们可以把YOLO的图片检测能力封装成HTTP接口,支持前端上传图片、后端返回检测结果,轻松集成到小程序、APP、管理系统等各类业务场景中。说白了,就是让检测能力接口化,业务集成轻量化。

    本文核心目标:在Windows环境下,完成Docker部署YOLOv8 → 解决部署过程中的常见问题 → 将YOLO检测能力集成到Spring Boot项目 → 提供可直接调用的图片检测接口。

    二、环境准备(必看)

    2.1 基础环境清单

    • 操作系统:Windows 10/11(建议开启WSL2,提升Docker性能)
    • Docker:Docker Desktop(版本20.0以上)
    • JDK:17(Spring Boot 3.2.x要求)
    • Maven:3.6+(项目构建)
    • Spring Boot:3.2.4
    • YOLO 模型:YOLOv8n(轻量版,适合CPU运行,无需GPU加速)

    2.2 前置环境配置

    2.2.1 Docker Desktop 配置(关键)

    1. 安装Docker Desktop后,开启WSL2后端(性能优于Hyper-V):

      • 打开Docker Desktop → Settings → General → 勾选“Use the WSL 2 based engine”
      • 重启Docker Desktop,确保服务正常启动(右下角Docker图标显示绿色)
    2. 配置文件共享(避免挂载目录权限问题):

      • 打开Docker Desktop → Settings → Resources → File Sharing
      • 点击“+”按钮,添加本地目录 D:yolo_test(用于挂载Docker容器,存储图片和检测结果),保存后重启Docker

    2.2.2 项目基础准备

    本文基于已有的Spring Boot项目(原有功能包含Ollama大模型集成、PGvector向量存储、阿里云语音识别等),核心是在原有项目基础上新增YOLO图片检测模块,无需从零搭建Spring Boot项目。

    三、Docker 部署 YOLOv8 模型(全程实操+问题排查)

    这一步是核心基础。我们将通过Docker拉取YOLOv8官方镜像,运行容器并完成图片检测,同时解决部署过程中最常见的“文件找不到”“挂载失败”等问题。

    3.1 拉取 YOLOv8 官方 Docker 镜像

    打开PowerShell(管理员模式),执行以下命令拉取官方镜像(内置YOLOv8所有依赖,无需手动配置):

    docker pull ultralytics/ultralytics:latest
    

    镜像拉取完成后,执行 docker images 可查看镜像是否存在。

    3.2 运行 Docker 容器并挂载本地目录

    核心命令(挂载本地 D:yolo_test 到容器内 /yolo_data,实现本地与容器文件互通):

    docker run -it --rm -v /d/yolo_test:/yolo_data ultralytics/ultralytics:latest
    

    命令说明:

    • -it:交互式终端,方便在容器内执行命令
    • --rm:容器退出后自动删除,避免残留
    • -v /d/yolo_test:/yolo_data:目录挂载(Windows路径需用 /d/ 替代 D:,Docker才能识别)

    3.3 执行 YOLOv8 图片检测(首次实操)

    3.3.1 准备测试图片

    在本地 D:yolo_test 目录下,放入一张测试图片,命名为 test.jpg(注意:文件名和后缀必须完全匹配,避免大小写错误,如 Test.jpg、test.jpeg 都会导致失败)。

    3.3.2 执行检测命令

    在容器内(命令行显示 root@xxx:/ultralytics#),执行以下命令:

    yolo detect predict model=yolov8n.pt source=/yolo_data/test.jpg save=True
    

    命令说明:

    • model=yolov8n.pt:使用YOLOv8轻量版模型(n=纳米版,适合CPU运行,体积小、速度快)
    • source=/yolo_data/test.jpg:检测源为容器内挂载目录下的test.jpg
    • save=True:保存检测结果(带检测框的图片)

    3.4 常见问题排查(重点!)

    首次运行大概率会遇到以下问题,这里把排查过程完整还原,帮你快速解决。

    问题1:FileNotFoundError: /yolo_data/test.jpg does not exist

    报错原因:容器内找不到指定图片,核心是两个原因之一:

    1. 本地 D:yolo_test 目录下没有test.jpg,或文件名/后缀错误
    2. 目录挂载失败,容器内 /yolo_data 目录为空

    解决步骤:

    1. 先在容器内执行 ls /yolo_data,查看挂载目录是否有文件:

      • 如果输出为空:说明挂载失败,重新执行容器运行命令(确保路径是 /d/yolo_test,而非 D:yolo_test)
      • 如果输出 yolo_data(子目录):说明图片放在了 D:yolo_testyolo_data 下,需修改命令为 source=/yolo_data/yolo_data/test.jpg
    2. 确认本地 D:yolo_test 下有test.jpg,重新执行检测命令

    问题2:检测结果保存到容器内,本地看不到

    报错现象:检测成功,但本地 D:yolo_test 目录下没有检测结果。

    原因:YOLO默认将结果保存到容器内 /ultralytics/runs/detect/predict,而非挂载目录。

    解决方法:

    1. 手动复制结果到挂载目录(容器内执行):

      cp -r /ultralytics/runs/detect/predict /yolo_data/
      
    2. 下次检测直接指定保存路径(推荐),修改命令为:

      yolo detect predict model=yolov8n.pt source=/yolo_data/test.jpg save=True project=/yolo_data/runs name=detect
      

      这样结果会直接保存到 /yolo_data/runs/detect,对应本地 D:yolo_testrunsdetect

    3.5 检测成功验证

    检测成功后,容器内会输出类似以下日志:

    image 1/1 /yolo_data/test.jpg: 640x480 1 cup, 1 tv, 1 mouse, 1 refrigerator, 1 book, 63.4ms
    Speed: 4.6ms preprocess, 63.4ms inference, 8.6ms postprocess per image at shape (1, 3, 640, 480)
    Results saved to /yolo_data/runs/detect
    

    此时打开本地 D:yolo_testrunsdetect 目录,会看到带检测框的 test.jpg,图片上会标注出识别到的物体(如杯子、电视、鼠标等),说明Docker部署YOLOv8成功!

    四、Spring Boot 集成 YOLOv8 检测能力(完整代码)

    Docker部署YOLOv8成功后,接下来集成到Spring Boot项目,提供HTTP接口,支持前端上传图片、后端返回检测结果(识别的物体、数量、耗时、结果图片路径)。

    4.1 项目改造:pom.xml 依赖新增

    在原有pom.xml基础上,新增文件操作、命令执行相关依赖(用于处理图片上传、调用Docker命令):

    
    
        2.15.1
        3.14.0
    
    
    
    
        
        
            commons-io
            commons-io
            ${commons-io.version}
        
        
        
        
            org.apache.commons
            commons-lang3
            ${commons-lang3.version}
        
        
        
        
            ch.ethz.ganymed
            ganymed-ssh2
            262
        
    
    

    注:原有依赖(Spring Boot Web、Ollama、PGvector、阿里云语音等)全部保留,无需修改。

    4.2 项目改造:application.yml 配置新增

    在原有配置基础上,新增YOLO和Docker相关配置,同时补充文件上传限制:

    # 新增 YOLO 配置
    yolo:
      # Docker 本地挂载目录(对应本地 D:yolo_test)
      docker-mount-path: D:yolo_test
      # 容器内挂载路径
      container-mount-path: /yolo_data
      # YOLO 模型名称(默认 yolov8n.pt)
      model-name: yolov8n.pt
      # 检测结果保存目录(容器内)
      container-result-path: /yolo_data/runs/detect
      # 本地临时文件存储目录
      local-temp-path: D:yolo_testtemp
      # Docker 镜像名称
      docker-image: ultralytics/ultralytics:latest
    
    # 原有配置保留,补充文件上传配置
    spring:
      servlet:
        multipart:
          max-file-size: 10MB  # 单文件最大10MB
          max-request-size: 50MB  # 总请求最大50MB
    

    4.3 新增核心代码(可直接复制使用)

    新增4个核心类,实现图片上传、Docker命令调用、检测结果解析、接口提供,全部放在 com.ruoyi 包下(与原有项目包结构一致)。

    4.3.1 配置类:YoloConfig.java(读取YOLO配置)

    package com.ruoyi.config;
    
    import lombok.Data;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    
    /**
     * YOLO 配置类,读取 application.yml 中的 yolo 相关配置
     */
    @Data
    @Component
    @ConfigurationProperties(prefix = "yolo")
    public class YoloConfig {
        /**
         * Docker 本地挂载目录
         */
        private String dockerMountPath;
    
        /**
         * 容器内挂载路径
         */
        private String containerMountPath;
    
        /**
         * YOLO 模型名称
         */
        private String modelName;
    
        /**
         * 容器内检测结果保存路径
         */
        private String containerResultPath;
    
        /**
         * 本地临时文件存储目录
         */
        private String localTempPath;
    
        /**
         * Docker 镜像名称
         */
        private String dockerImage;
    }
    

    4.3.2 实体类:YoloDetectResult.java(封装检测结果)

    package com.ruoyi.entity;
    
    import lombok.AllArgsConstructor;
    import lombok.Builder;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    import java.util.List;
    
    /**
     * YOLO 检测结果返回实体,用于接口返回 JSON 格式数据
     */
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public class YoloDetectResult {
        /**
         * 检测是否成功
         */
        private boolean success;
    
        /**
         * 错误信息(失败时返回)
         */
        private String errorMsg;
    
        /**
         * 检测到的目标列表
         */
        private List detectObjects;
    
        /**
         * 检测耗时(毫秒)
         */
        private long costTime;
    
        /**
         * 检测结果图片路径(本地)
         */
        private String resultImagePath;
    
        /**
         * 检测目标实体(单个物体的信息)
         */
        @Data
        @Builder
        @NoArgsConstructor
        @AllArgsConstructor
        public static class DetectObject {
            /**
             * 目标类别(如 cup、tv、mouse)
             */
            private String className;
    
            /**
             * 目标数量
             */
            private int count;
    
            /**
             * 置信度(0-1),越大越精准
             */
            private float confidence;
        }
    }
    

    4.3.3 工具类:YoloDetectUtil.java(核心检测逻辑)

    package com.ruoyi.util;
    
    import com.ruoyi.config.YoloConfig;
    import com.ruoyi.entity.YoloDetectResult;
    import lombok.RequiredArgsConstructor;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.stereotype.Component;
    import org.springframework.web.multipart.MultipartFile;
    
    import java.io.File;
    import java.io.IOException;
    import java.util.*;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    /**
     * YOLO 图片检测工具类,封装 Docker 命令调用、结果解析逻辑
     */
    @Slf4j
    @Component
    @RequiredArgsConstructor
    public class YoloDetectUtil {
        private final YoloConfig yoloConfig;
    
        // 匹配检测结果的正则表达式(如:1 cup, 1 tv, 1 mouse)
        private static final Pattern DETECT_PATTERN = Pattern.compile("(\d+)\s+([a-zA-Z_]+)");
    
        /**
         * 上传图片并执行 YOLO 检测
         * @param file 上传的图片文件
         * @return 检测结果(包含识别的物体、耗时、结果路径)
         */
        public YoloDetectResult detectImage(MultipartFile file) {
            long startTime = System.currentTimeMillis();
            try {
                // 1. 校验文件是否为空
                if (file.isEmpty()) {
                    return YoloDetectResult.builder()
                            .success(false)
                            .errorMsg("上传的图片文件为空")
                            .build();
                }
    
                // 2. 校验图片格式(仅支持 jpg/jpeg/png/bmp)
                String originalFilename = file.getOriginalFilename();
                if (originalFilename == null || !originalFilename.matches(".*\.(jpg|jpeg|png|bmp)$")) {
                    return YoloDetectResult.builder()
                            .success(false)
                            .errorMsg("仅支持 jpg/jpeg/png/bmp 格式的图片")
                            .build();
                }
    
                // 3. 创建临时目录(用于存储上传的图片)
                File tempDir = new File(yoloConfig.getLocalTempPath());
                if (!tempDir.exists()) {
                    boolean mkdirs = tempDir.mkdirs();
                    if (!mkdirs) {
                        log.error("创建临时目录失败:{}", yoloConfig.getLocalTempPath());
                        return YoloDetectResult.builder()
                                .success(false)
                                .errorMsg("创建临时目录失败")
                                .build();
                    }
                }
    
                // 4. 保存上传的图片到本地挂载目录(Docker 可访问)
                String fileName = UUID.randomUUID() + "_" + originalFilename;
                String localImagePath = yoloConfig.getDockerMountPath() + File.separator + fileName;
                File localImageFile = new File(localImagePath);
                file.transferTo(localImageFile);
                log.info("上传的图片已保存到:{}", localImagePath);
    
                // 5. 构建 Docker 命令(调用 YOLO 检测)
                String containerImagePath = yoloConfig.getContainerMountPath() + "/" + fileName;
                String dockerCmd = String.format(
                        "docker run --rm -v %s:%s %s yolo detect predict model=%s source=%s save=True project=%s name=detect",
                        yoloConfig.getDockerMountPath().replace("\", "/"), // Windows 路径转换为 Docker 可识别格式
                        yoloConfig.getContainerMountPath(),
                        yoloConfig.getDockerImage(),
                        yoloConfig.getModelName(),
                        containerImagePath,
                        yoloConfig.getContainerResultPath()
                );
                log.info("执行 Docker 命令:{}", dockerCmd);
    
                // 6. 执行 Docker 命令,获取输出结果
                Process process = Runtime.getRuntime().exec(new String[]{"cmd", "/c", dockerCmd});
                int exitCode = process.waitFor();
                if (exitCode != 0) {
                    // 读取错误信息,返回失败结果
                    String errorMsg = new String(process.getErrorStream().readAllBytes());
                    log.error("执行 YOLO 检测失败,错误码:{},错误信息:{}", exitCode, errorMsg);
                    return YoloDetectResult.builder()
                            .success(false)
                            .errorMsg("执行检测失败:" + errorMsg)
                            .build();
                }
    
                // 7. 解析命令输出,提取检测到的物体信息
                String output = new String(process.getInputStream().readAllBytes());
                log.info("YOLO 检测命令输出:{}", output);
                List detectObjects = parseDetectResult(output);
    
                // 8. 拼接检测结果图片路径(本地可访问)
                String resultImagePath = yoloConfig.getDockerMountPath() + File.separator + "runs" + File.separator + "detect" + File.separator + "detect" + File.separator + fileName;
                long costTime = System.currentTimeMillis() - startTime;
    
                // 9. 返回成功结果
                return YoloDetectResult.builder()
                        .success(true)
                        .detectObjects(detectObjects)
                        .costTime(costTime)
                        .resultImagePath(resultImagePath)
                        .build();
    
            } catch (IOException e) {
                log.error("图片检测 IO 异常", e);
                return YoloDetectResult.builder()
                        .success(false)
                        .errorMsg("IO 异常:" + e.getMessage())
                        .build();
            } catch (InterruptedException e) {
                log.error("检测命令执行被中断", e);
                Thread.currentThread().interrupt();
                return YoloDetectResult.builder()
                        .success(false)
                        .errorMsg("检测被中断:" + e.getMessage())
                        .build();
            } catch (Exception e) {
                log.error("图片检测异常", e);
                return YoloDetectResult.builder()
                        .success(false)
                        .errorMsg("检测异常:" + e.getMessage())
                        .build();
            }
        }
    
        /**
         * 解析 YOLO 检测命令输出,提取目标信息(类别、数量)
         * @param output 命令输出字符串
         * @return 检测目标列表
         */
        private List parseDetectResult(String output) {
            List result = new ArrayList<>();
            if (output == null || output.isEmpty()) {
                return result;
            }
    
            // 匹配 "1 cup, 1 tv, 1 mouse" 格式的字符串
            Matcher matcher = DETECT_PATTERN.matcher(output);
            Map countMap = new HashMap<>();
    
            while (matcher.find()) {
                int count = Integer.parseInt(matcher.group(1));
                String className = matcher.group(2);
                countMap.put(className, countMap.getOrDefault(className, 0) + count);
            }
    
            // 转换为 DetectObject 列表(置信度默认 0.9,可根据实际输出优化)
            for (Map.Entry entry : countMap.entrySet()) {
                result.add(YoloDetectResult.DetectObject.builder()
                        .className(entry.getKey())
                        .count(entry.getValue())
                        .confidence(0.9f)
                        .build());
            }
    
            return result;
        }
    }
    

    4.3.4 控制器:YoloController.java(提供HTTP接口)

    package com.ruoyi.controller;
    
    import com.ruoyi.entity.YoloDetectResult;
    import com.ruoyi.util.YoloDetectUtil;
    import lombok.RequiredArgsConstructor;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.http.HttpStatus;
    import org.springframework.http.ResponseEntity;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.multipart.MultipartFile;
    
    /**
     * YOLO 图片检测控制器,提供 HTTP 接口供前端调用
     */
    @Slf4j
    @RestController
    @RequestMapping("/api/yolo")
    @RequiredArgsConstructor
    public class YoloController {
        private final YoloDetectUtil yoloDetectUtil;
    
        /**
         * 图片目标检测接口
         * @param file 上传的图片文件
         * @return 检测结果(JSON 格式)
         */
        @PostMapping("/detect")
        public ResponseEntity detectImage(@RequestParam("file") MultipartFile file) {
            try {
                YoloDetectResult result = yoloDetectUtil.detectImage(file);
                return ResponseEntity.ok(result);
            } catch (Exception e) {
                log.error("图片检测接口异常", e);
                return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
                        .body(YoloDetectResult.builder()
                                .success(false)
                                .errorMsg("接口异常:" + e.getMessage())
                                .build());
            }
        }
    }
    

    4.4 启动类验证(确保组件扫描)

    确保Spring Boot启动类扫描到新增的配置类、控制器等组件,修改启动类(如已有则无需新增):

    package com.ruoyi;
    
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.context.properties.EnableConfigurationProperties;
    
    @Slf4j
    @SpringBootApplication(scanBasePackages = "com.ruoyi") // 扫描 com.ruoyi 下所有组件
    @EnableConfigurationProperties
    public class Application {
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
            log.info("Spring Boot 应用启动成功,端口:8889");
        }
    }
    

    五、接口测试(验证集成效果)

    项目启动成功后,用Postman测试图片检测接口,验证集成效果。

    5.1 测试准备

    1. 启动Docker Desktop(确保Docker服务正常运行)
    2. 启动Spring Boot应用(端口8889)
    3. 准备一张测试图片(jpg/png格式)

    5.2 Postman 测试步骤

    1. 新建POST请求,地址:http://localhost:8889/api/yolo/detect
    2. 请求类型选择 form-data,key填写 file,value选择“文件”,上传测试图片
    3. 点击发送请求,查看返回结果

    5.3 成功返回示例

    {
        "success": true,
        "errorMsg": null,
        "detectObjects": [
            {
                "className": "cup",
                "count": 1,
                "confidence": 0.9
            },
            {
                "className": "tv",
                "count": 1,
                "confidence": 0.9
            },
            {
                "className": "mouse",
                "count": 1,
                "confidence": 0.9
            }
        ],
        "costTime": 1200,
        "resultImagePath": "D:\yolo_test\runs\detect\detect\xxx_test.jpg"
    }
    

    返回结果说明:

    • success: true:检测成功
    • detectObjects:识别到的物体列表(类别、数量、置信度)
    • costTime:检测耗时(毫秒)
    • resultImagePath:本地带检测框的图片路径,可直接打开查看结果

    六、常见问题与优化建议

    6.1 常见问题

    问题可能原因解决方案
    接口调用失败,提示“Docker命令执行失败”Docker未启动检查Docker Desktop是否正常运行
    接口调用失败,提示“执行检测失败”挂载目录权限问题检查Docker Desktop文件共享配置是否正确
    检测速度慢模型较大或CPU性能不足使用更轻量的YOLOv8n模型,或考虑开启GPU加速
    结果图片无法打开结果图片路径不正确检查resultImagePath是否正确,确认Docker检测结果已保存到挂载目录
    图片上传失败,提示文件过大文件大小超出限制调整application.yml中的max-file-size配置

    6.2 优化建议

    1. 优化检测速度

    • 开启Docker GPU加速(需安装NVIDIA显卡驱动和Docker GPU插件)
    • 使用更轻量的YOLO模型(如YOLOv8n已是最轻量,可考虑模型量化压缩)
    • 图片预处理:上传前对图片进行压缩,减小分辨率

    2. 增强接口安全性

    • 添加API Key权限校验,防止匿名调用
    • 添加接口限流,避免Docker容器被压垮
    • 文件类型严格校验,防止恶意文件上传

    3. 拓展功能

    • 支持批量图片检测(上传压缩包,异步处理)
    • 检测结果持久化:将检测结果存入数据库(如PostgreSQL),支持历史记录查询
    • 前端可视化:新增前端页面,实现图片上传、检测结果可视化
    • 视频流检测:支持RTSP视频流实时目标检测

    七、总结

    这篇文章完整还原了Windows环境下,通过Docker部署YOLOv8并集成到Spring Boot项目的全过程。从环境准备、问题排查到代码集成、接口测试,每一步都给出了详细的实操步骤和解决方案。

    核心亮点

    1. 通过Docker容器化部署YOLOv8,避免环境依赖冲突,实现快速部署
    2. 完整解决了Windows下Docker挂载目录、文件找不到等常见问题
    3. 将YOLO检测能力封装为Spring Boot接口,可直接集成到各类业务系统
    4. 代码可直接复用,适配原有Spring Boot项目(无需从零搭建)

    后续拓展方向

    基于本文的基础,可以进一步拓展:

    • 视频流实时目标检测
    • 批量图片异步处理
    • 检测结果可视化Dashboard
    • 模型训练与迭代优化

    让YOLO目标检测能力更好地服务于实际业务场景。如果在实操过程中遇到问题,可参考本文的问题排查部分,或留言交流。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Windows
    相关文章 更多
    精品专题 更多
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    IOS软件

    正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

    AI

    正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

    Mac软件 更多
    IntelliJ IDEA macOS版
    IntelliJ IDEA macOS版

    IntelliJ IDEA 是 JetBrains 推出的专业集成开发环境,重点服务于 Java、Kotlin 与 JVM 项目开发。软件集成代码补全、静态检查、重构、调试、测试、版本控制及构建工具,并可借助插件扩展语言和框架支持。

    PyCharm macOS版
    PyCharm macOS版

    JetBrains PyCharm 是面向 Python 开发者的集成开发环境,提供智能补全、代码检查、重构、调试、测试、版本控制及虚拟环境管理功能。Mac 版兼容 Intel 与 Apple 芯片,核心功能可免费使用。

    WebStorm macOS版
    WebStorm macOS版

    JetBrains WebStorm 是面向 JavaScript、TypeScript 和现代 Web 技术的专业集成开发环境,可智能理解项目结构,提供代码补全、重构、错误检查、运行调试、测试及 Git 工具。

    After Effects macOS版
    After Effects macOS版

    Adobe After Effects 是面向动态图形、影视特效与视频合成的专业创作软件。它提供关键帧动画、遮罩抠像、运动跟踪、三维空间、文字动画和表达式等工具,并可与 Premiere Pro、Photoshop、Illustrator

    Audition macOS版
    Audition macOS版

    Adobe Audition 是面向播客、影视后期、音乐制作及内容创作者的专业音频工作站,提供波形精修、多轨录制与混音、频谱编辑、降噪修复、响度匹配和效果处理工具,并可与 Adobe Premiere 协同完成视频声音制作。

    Bridge macOS版
    Bridge macOS版

    Adobe Bridge 是面向摄影师、设计师及内容团队的免费数字资产管理工具,可集中预览照片、视频和 Adobe 项目文件,并利用评级、标签、关键词、元数据、筛选与收藏集完成分类检索。它还支持批量重命名、格式导出、相机导入及 Camera

    Illustrator macOS版
    Illustrator macOS版

    Adobe Illustrator 是 Adobe 推出的专业矢量图形设计软件,适合在 Mac 上制作标志、图标、插画、包装、信息图及印刷版面。它以路径和锚点构建可无损缩放的图形,并提供钢笔、形状、文字、图像描摹、渐变、画板及生成式功能。

    InDesign macOS版
    InDesign macOS版

    Adobe InDesign 是面向印刷品与数字出版物的专业版面设计软件,可在 Mac 上制作书籍、杂志、宣传册、海报、报告及交互式文档。它提供精细的文字样式、网格、母版、长文档管理和印前输出能力。

    Lightroom Classic macOS版
    Lightroom Classic macOS版

    Adobe Lightroom Classic 是面向桌面摄影工作流的照片管理与后期处理软件,可将原始照片保存在本地硬盘,通过目录、关键词、评分和收藏夹高效整理图库,并提供 RAW 冲印、蒙版、镜头校正、批量同步及多格式导出等功能。

    Media Encoder macOS版
    Media Encoder macOS版

    Adobe Media Encoder 是 Adobe 推出的专业音视频编码与转码工具,可通过队列、预设和监视文件夹批量完成格式转换、代理文件创建及多平台成片输出,并与 Premiere Pro、After Effects 等软件紧密协作。

    Photoshop macOS版
    Photoshop macOS版

    Adobe Photoshop 是面向摄影师、设计师和内容创作者的专业图像处理软件,提供图层、蒙版、选区、修复、调色、文字排版、智能对象及生成式编辑等能力。Mac 版支持 Intel 与 Apple Silicon 处理器。

    Premiere Pro macOS版
    Premiere Pro macOS版

    Adobe Premiere Pro 是面向专业视频制作的非线性剪辑软件,提供多轨时间线、调色、音频处理、字幕、代理工作流和多格式输出能力,并可与 After Effects、Audition、Photoshop 及 Frame.io 协同

    WINDOWS 更多
    IntelliJ IDEA Windows版
    IntelliJ IDEA Windows版

    JetBrains IntelliJ IDEA 是以 Java、Kotlin 和 JVM 项目为核心的专业集成开发环境,提供智能补全、代码检查、安全重构、调试、测试、版本控制及构建工具集成。统一发行版的核心功能可免费用于商业和非商业项目,

    PhpStorm Windows版
    PhpStorm Windows版

    PhpStorm 是 JetBrains 面向 PHP 与现代 Web 开发打造的专业集成开发环境,提供代码补全、静态检查、重构、调试、测试、数据库、版本控制及前端语言支持。Windows 用户可直接下载安装程序,

    PyCharm Windows版
    PyCharm Windows版

    PyCharm 是 JetBrains 推出的 Python 集成开发环境,提供智能代码补全、错误检查、重构、调试、测试、Git、终端及 Jupyter Notebook 支持。统一版安装后可体验 30 天 Pro 功能,

    WebStorm Windows版
    WebStorm Windows版

    WebStorm 是 JetBrains 面向 JavaScript、TypeScript 和现代 Web 技术打造的集成开发环境。它提供项目级代码分析、智能补全、安全重构、导航搜索,并集成调试、测试、终端、Git 与常用前端工具,

    Photoshop Windows版
    Photoshop Windows版

    Adobe Photoshop 是面向摄影师、设计师和内容创作者的专业图像处理工具,可在 Windows 上完成照片修饰、选区抠图、图层合成、文字排版、绘画及生成式编辑。软件采用订阅授权,由 Creative Cloud 管理安装、更新与许

    InDesign Windows版
    InDesign Windows版

    Adobe InDesign 是面向印刷与数字出版的专业页面排版工具,可制作书籍、杂志、宣传册、海报、交互式 PDF 和电子书。它提供精细的文字样式、多页面管理、印前检查及多格式输出能力,并能与 Photoshop、Illustrator

    Illustrator Windows版
    Illustrator Windows版

    Adobe Illustrator 是用于绘制矢量图形、插画、图标、徽标和版式的专业设计工具。它以路径和锚点为核心,作品放大后仍能保持清晰,并提供画板、文字、渐变、图像描摹及精确变换等功能,适合品牌视觉、印刷物料、数字界面和商业插画创作。

    Bridge Windows版
    Bridge Windows版

    Adobe Bridge 是 Adobe 推出的创意资产管理工具,可集中预览、分类和查找照片、视频、PDF及多种设计文件,并支持元数据、关键词、评级、批量重命名和格式导出。它可与 Photoshop、Illustrator 等应用衔接,

    Lightroom Classic Windows版
    Lightroom Classic Windows版

    Adobe Lightroom Classic 是面向 Windows 桌面摄影工作流的照片管理与无损编辑工具,可通过目录集中整理大型图库,并完成 RAW 显影、局部蒙版、批量调整、打印和多格式导出。它强调本地文件管理与精细控制,

    Acrobat Pro Windows版
    Acrobat Pro Windows版

    Adobe Acrobat Pro 是面向专业 PDF 工作的综合解决方案,可在 Windows 中创建、编辑、转换、比较、整理和保护文档,并支持表单、电子签名、扫描件文字识别及敏感信息永久遮盖。订阅还包含网页、移动服务和云端协作能力,

    After Effects Windows版
    After Effects Windows版

    Adobe After Effects 是面向动态图形、动画与影视视觉特效制作的专业工具,可完成关键帧动画、图层合成、遮罩跟踪、抠像、文字动画和二维三维元素整合。Windows 版通过 Adobe Creative Cloud 安装及更新,

    Media Encoder Windows版
    Media Encoder Windows版

    Adobe Media Encoder 是 Adobe 面向视频与音频制作流程提供的专业编码和转码工具,可批量处理媒体文件、创建代理、套用输出预设并监控文件夹自动执行任务。它与 Premiere、After Effects、Audition

    即将离开本站
    您即将前往第三方网站,请确认是否继续?