ffmpeg
压缩单张图片
ffmpeg -i 待压缩的图片路径 -q:v 2 压缩后的图片路径
• input.jpg: 输入图片文件。
• -q:v 2: 设置图片质量,值越小质量越高(默认值为 2)。
• output.jpg: 输出图片文件。
批量压缩图片
在 Windows 中,可以使用 for 循环来批量压缩图片:
for %i in (*.jpg) do ffmpeg -i "%i" -q:v 2 "压缩后的图片路径_%i"
• *.jpg: 匹配当前目录下所有 .jpg 文件。
• compressed_%i: 将压缩后的图片保存为 compressed_ 开头的文件。
注意:如果在批处理脚本(.bat 文件)中使用 for 循环,需要将 %i 改为 %%i:
for %%i in (*.jpg) do ffmpeg -i "%%i" -q:v 2 "压缩后的图片路径%%i"
调整分辨率并压缩
ffmpeg -i 待压缩的图片路径 -vf "scale=800:600" -q:v 2 压缩后的图片路径
• -vf "scale=800:600": 将图片缩放到 800x600 的分辨率。
压缩 PNG 图片
ffmpeg -i 待压缩的图片路径 -compression_level 5 压缩后的图片路径
• -compression_level 5: 设置 PNG 图片的压缩级别(0 为无压缩,9 为最大压缩)。
批量压缩 PNG 图片
for %i in (*.png) do ffmpeg -i "%i" -compression_level 5 "压缩后的图片路径_%i"
用 WebP 格式压缩
ffmpeg -i 待压缩的图片路径 -q:v 80 压缩后的图片路径.webp
• -q:v 80: 设置 WebP 图片的质量(0 为最差,100 为最好)。
量压缩为 WebP 格式
for %i in (*.jpg) do ffmpeg -i "%i" -q:v 80 "%~ni.webp"
• %~ni.webp: 将输出文件保存为与输入文件同名,但扩展名为 .webp。
保持原始宽高比
ffmpeg -i 待压缩的图片路径 -vf "scale=800:-1" -q:v 2 压缩后的图片路径
• scale=800:-1: 将宽度调整为 800 像素,高度自动调整以保持宽高比。
压缩 GIF 图片
ffmpeg -i 待压缩的图片路径 -vf "scale=400:-1" -f gif 压缩后的图片路径.gif
• -vf "scale=400:-1": 将 GIF 图片的宽度调整为 400 像素,高度自动调整。
批量压缩 GIF 图片
for %i in (*.gif) do ffmpeg -i "%i" -vf "scale=400:-1" -f gif "压缩后的图片路径_%i"
指定输出目录
如果希望将压缩后的图片保存到指定目录,可以使用以下指令:
for %i in (*.jpg) do ffmpeg -i "%i" -q:v 2 "d:\e\压缩后的图片路径_%i"
• d:\e\压缩后的图片路径_%i: 将压缩后的图片保存到 d:\e\压缩后的图片路径 目录。
使用批处理脚本
将以下内容保存为 .bat 文件,双击运行即可批量压缩图片:
@echo off
for %%i in (*.jpg) do (
ffmpeg -i "%%i" -q:v 2 "压缩后的图片路径_%%i"
)
echo 图片压缩完成!
pause
图片格式转换
ffmpeg -i 待压缩的图片路径.jpg 压缩后的图片路径.png
Visual Studio Code
自动换行
设置终端为Powershell和utf-8
// 1. 把默认终端设为 PowerShell
"terminal.integrated.defaultProfile.windows": "PowerShell",
// 2. 给 PowerShell 配置自动执行 chcp 65001,启动就切 UTF-8
"terminal.integrated.profiles.windows": {
"PowerShell": {
"source": "PowerShell",
"args": ["-NoExit", "-Command", "chcp 65001 > $null"],
"icon": "terminal-powershell"
},
// 保留 cmd 但不设为默认,需要时手动切换
"Command Prompt": {
"path": [
"${env:windir}\Sysnative\cmd.exe",
"${env:windir}\System32\cmd.exe"
],
"args": ["/k", "chcp 65001 > nul"],
"icon": "terminal-cmd"
}
},
配置run coder插件
// run code
"code-runner.executorMap": {
// PowerShell 兼容写法:用引号包裹JVM参数,避免解析错误
"kotlin": "cd $dir && kotlinc $fileName -include-runtime -d $fileNameWithoutExt.jar && java "-Dfile.encoding=UTF-8" -jar $fileNameWithoutExt.jar",
"python": "python -X utf8"
},
"code-runner.runInTerminal": true,
"code-runner.terminal.encoding": "utf8",
重建索引
在 VS Code 按:Ctrl + Shift + P 输入 → Reload Window
快捷
搜索和替换
| 按 Press | 功能 Function |
|---|---|
| Ctrl + F | 查找 |
| Ctrl + H | 替换 |
| F3 / Shift + F3 | 查找下一个/上一个 |
导航 | Navigation
| 按 Press | 功能 Function |
|---|---|
| Ctrl + T | 显示所有符号 Show all Symbols |
| Ctrl + G | 转到行… Go to Line… |
| Ctrl + P | 转到文件… Go to File… |
| Ctrl + Shift + O | 转到符号… Go to Symbol… |
| Ctrl + Shift + M | 显示问题面板 Show Problems panel |
| Ctrl + Shift + Tab | 导航编辑器组历史记录 Navigate editor group history |
| Alt + ←/→ | 返回/前进 Go back / forward |
| Ctrl + M | 切换选项卡移动焦点 Toggle Tab moves focus |
基础编辑 | Basic editing
| 按 Press | 功能 Function |
|---|---|
| Alt+ ↑ / ↓ | 向上/向下移动行 Move line up/down |
| Shift+Alt + ↓ / ↑ | 向上/向下复制行 Copy line up/down |
| Ctrl+Shift+K | 删除行 Delete line |
| Ctrl+Enter | 在下面插入行 Insert line below |
| Ctrl+Shift+Enter | 在上面插入行 Insert line above |
| Ctrl+] /[ | 缩进/缩进行 Indent/outdent line |
| Ctrl+Home | 转到文件开头 Go to beginning of file |
| Ctrl+End | 转到文件末尾 Go to end of file |
| Ctrl+↑ / ↓ | 向上/向下滚动行 Scroll line up/down |
| Alt+PgUp / PgDown | 向上/向下滚动页面 Scroll page up/down |
| Ctrl+/ | 切换行注释 Toggle line comment |
文件管理 | File management
| 按 Press | 功能 Function |
|---|---|
| Ctrl+N | 新文件 New File |
| Ctrl+O | 打开文件… Open File… |
| Ctrl+Shift+S | 另存为… Save As… |
| Ctrl+K S | 全部保存 Save All |
| Ctrl+F4 | 关闭 Close |
| Ctrl+K Ctrl+W | 关闭所有 Close All |
| Ctrl+Shift+T | 重新打开关闭的编辑器 Reopen closed editor |
| Ctrl+K | 输入保持打开 Enter Keep Open |
| Ctrl+Tab | 打开下一个 Open next |
| Ctrl+Shift+Tab | 打开上一个 Open previous |
| Ctrl+K P | 复制活动文件的路径 Copy path of active file |
| Ctrl+K R | 显示资源管理器中的活动文件 Reveal active file in Explorer |
| Ctrl+K O | 显示新窗口/实例中的活动文件 Show active file in new window/instance |
Maven
- 建立kotlin项目指令,交互式
mvn archetype:generate "-DarchetypeGroupId=org.jetbrains.kotlin" "-DarchetypeArtifactId=kotlin-archetype-jvm" "-DarchetypeVersion=1.9.0" "-DinteractiveMode=true"
非交互式
mvn archetype:generate "-DgroupId=com.example" "-DartifactId=kotlin-demo" "-Dversion=1.0.0" "-Dpackage=com.example" "-DarchetypeGroupId=org.jetbrains.kotlin" "-DarchetypeArtifactId=kotlin-archetype-jvm" "-DarchetypeVersion=1.9.0" "-DinteractiveMode=false"
- 填写项目信息
Define value for property 'groupId': com.example [包名]
Define value for property 'artifactId': kotlin-demo [项目名]
Define value for property 'version' 1.0-SNAPSHOT: [版本号]
Define value for property 'package' com.wnan: [二级包名]
kotlin-demo
│ pom.xml
└─src
├─main
│ └─kotlin
│ └─com
│ └─example
│ Hello.kt
└─test
└─kotlin
└─com
└─example
HelloTest.kt
指令
# 1. 编译
mvn compile
# 2. 直接运行(正确写法)
mvn exec:java "-Dexec.mainClass=com.example.HelloKt"
# 3. 打包(先配置可执行JAR,见下文)这个是不能运行的,需要运行就要配置胖包
mvn package
# 4. 运行打包好的JAR
java -jar target/kotlin-demo-1.0.0.jar
打胖包:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.4.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<!-- 你的主类全路径 -->
<mainClass>com.example.HelloKt</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
镜像源
阿里源
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url>
</mirror>
腾讯源
<mirror>
<id>tencent-cloud</id>
<mirrorOf>central</mirrorOf>
<url>https://mirrors.cloud.tencent.com/nexus/repository/maven-public/</url>
</mirror>