Git常用命令与PIL库
Git常用命令
以下是 Git 常用命令,分为核心操作、分支管理、远程协作、撤销与恢复等类别:
一、基础操作
-
初始化仓库
git init -
克隆远程仓库
git clone <仓库URL> -
查看状态
git status -
添加文件到暂存区
git add <文件名> # 添加单个文件 git add . # 添加所有修改的文件 -
提交到本地仓库
git commit -m "提交说明"
二、分支管理
-
查看分支
git branch # 本地分支 git branch -a # 所有分支(本地+远程) -
创建/切换分支
git branch <分支名> # 创建分支 git checkout <分支名> # 切换分支 git checkout -b <分支名> # 创建并切换分支 -
合并分支
git merge <分支名> # 将指定分支合并到当前分支 -
删除分支
git branch -d <分支名> # 删除本地分支 git push origin --delete <分支名> # 删除远程分支
三、远程仓库协作
-
关联远程仓库
git remote add origin <仓库URL> -
推送代码到远程
git push origin <分支名> -
拉取远程更新
git pull origin <分支名> # 拉取并合并 git fetch origin # 仅拉取不合并 -
查看远程仓库
git remote -v
四、撤销与恢复
-
撤销工作区修改
git checkout -- <文件名> # 撤销未暂存的修改 -
撤销暂存区文件
git reset HEAD <文件名> # 从暂存区移出,保留修改 -
回退到某次提交
git reset --hard <commit_id> # 彻底回退(谨慎使用) git reset --soft <commit_id> # 保留修改内容 -
恢复已删除的文件/提交
git reflog # 查看操作记录 git checkout <commit_id> -- <文件名>
五、查看与对比
-
查看提交记录
git log --oneline # 简洁版 git log --graph # 图形化显示分支 -
对比文件差异
git diff # 工作区与暂存区差异 git diff --staged # 暂存区与最新提交差异 git diff <分支1> <分支2> # 两个分支差异
六、储藏与标签
-
储藏临时修改
git stash # 保存工作现场 git stash pop # 恢复最近储藏的内容 -
标签管理
git tag -a v1.0 -m "版本说明" # 创建标签 git push origin --tags # 推送所有标签到远程
日常开发流程示例
# 1. 拉取最新代码
git pull origin main
# 2. 创建功能分支
git checkout -b feature/login
# 3. 开发后提交
git add .
git commit -m "feat: 添加用户登录"
# 4. 推送到远程
git push origin feature/login
# 5. 合并到主分支(通过 Pull Request)
git checkout main
git merge feature/login
掌握这些命令可覆盖 90% 的日常场景。
PIL库
PIL是python中用于图片处理的库
通道
|
模式 |
通道说明 |
示例 |
|---|---|---|
|
L |
灰度(1个通道,0-255) |
黑白图像 |
|
RGB |
红、绿、蓝(3通道) |
彩色图像 |
|
RGBA |
RGB + 透明度(4通道) |
带透明背景的PNG |
|
CMYK |
印刷四色(4通道) |
印刷用图像 |
|
P |
调色板模式(1通道+调色板) |
GIF |
|
1 |
二值图像(1通道,0/1) |
黑白位图 |
L:灰度图 RGB:彩色图 1:二值图
PIL/Pillow库常用函数大全
以下是 PIL/Pillow 库的核心常用函数分类汇总:
一、图像打开、创建与保存
1. 图像打开
from PIL import Image
# 基本打开
img = Image.open("image.jpg") # 自动检测格式
img = Image.open("image.png", mode='RGB') # 指定模式
2. 创建图像
# 创建新图像
img = Image.new(mode, size, color)
img = Image.new("RGB", (800, 600), "white")
img = Image.new("RGBA", (800, 600), (255, 0, 0, 128))
# 从数组创建
import numpy as np
arr = np.random.randint(0, 255, (300, 400, 3), dtype=np.uint8)
img = Image.fromarray(arr, mode="RGB")
3. 保存图像
# 基本保存
img.save("output.jpg")
img.save("output.png", format="PNG") # 显式指定格式
二、图像基本操作
1. 尺寸调整
PIL提供了7种标准的transpose()操作:
|
常量 |
值 |
说明 |
等效操作 |
|---|---|---|---|
|
|
0 |
水平翻转(左右镜像) |
|
|
|
1 |
垂直翻转(上下镜像) |
|
|
|
2 |
顺时针旋转90° |
|
|
|
3 |
旋转180° |
|
|
|
4 |
顺时针旋转270°(逆时针90°) |
|
|
|
5 |
转置(旋转90°后水平翻转) |
|
|
|
6 |
横向转置(旋转90°后垂直翻转) |
|
# 调整大小
img_resized = img.resize((width, height), resample=Image.Resampling.LANCZOS)
img_resized = img.resize((width, height), resample=Image.Resampling.BICUBIC)
# 旋转
img_rotated = img.rotate(45, expand=True) # expand=True避免裁剪
img_rotated = img.rotate(30, fillcolor="white") # 填充背景色
# 翻转
img_flipped = img.transpose(Image.Transpose.FLIP_LEFT_RIGHT)
img_flipped = img.transpose(Image.Transpose.FLIP_TOP_BOTTOM)
img_flipped = img.transpose(Image.Transpose.ROTATE_90)
2. 裁剪与拼接
# 矩形裁剪
box = (left, top, right, bottom) # 坐标
img_cropped = img.crop(box)
# 中心裁剪
width, height = 200, 200
left = (img.width - width) // 2
top = (img.height - height) // 2
img_center = img.crop((left, top, left+width, top+height))
# 图像拼接
images = [img1, img2, img3]
total_width = sum([i.width for i in images])
max_height = max([i.height for i in images])
new_img = Image.new("RGB", (total_width, max_height))
x_offset = 0
for im in images:
new_img.paste(im, (x_offset, 0))
x_offset += im.width
3. 图像粘贴与合成
# 基本粘贴
img.paste(patch, (x, y)) # 直接覆盖
img.paste(patch, (x, y), mask=patch) # 带透明通道
三、图像处理
色彩空间转换
# 模式转换
img_gray = img.convert("L") # 灰度
img_rgb = img.convert("RGB") # RGB
img_rgba = img.convert("RGBA") # RGBA
img_cmyk = img.convert("CMYK") # CMYK
img_palette = img.convert("P", palette=Image.Palette.ADAPTIVE, colors=256) # 调色板
四、绘制文字
2. 文字绘制
# 加载字体
font = ImageFont.truetype("arial.ttf", size=20)
font = ImageFont.load_default() # 默认字体
# 绘制文字
draw.text((x, y), "Hello PIL", fill="white", font=font, anchor="lt")
draw.text((x, y), "多行文字\n第二行", fill="white", font=font, spacing=10)
# 带背景框的文字
bbox = draw.textbbox((x, y), "Text", font=font) # 获取边界框
draw.rectangle(bbox, fill="black") # 绘制背景
draw.text((x, y), "Text", fill="white", font=font)
五、图像信息与处理
1. 获取图像信息
# 基本信息
print(f"格式: {img.format}")
print(f"模式: {img.mode}")
print(f"尺寸: {img.size}") # (width, height)
print(f"宽度: {img.width}")
print(f"高度: {img.height}")
更多推荐
所有评论(0)