📝 博客 · 2026-08-02 · ⏱ 14 分钟

图片旋转/翻转:在线修改方向

图片旋转翻转教程:90/180/270 度旋转、水平/垂直翻转、自定义角度,处理手机拍照方向错误、扫描方向歪斜。

图片旋转图片翻转在线工具图像处理

图片旋转/翻转:在线修改方向

手机拍照方向错误、扫描的文档歪斜、需要镜像图片——在线旋转翻转工具一键解决。本文详解图片方向调整。

52tool 旋转翻转工具

工具地址:图片旋转

功能

实战 1:90 度旋转

原图:横向 4000x3000
操作:顺时针 90 度
结果:竖向 3000x4000

实战 2:水平翻转

原图:人物向左看
操作:水平翻转
结果:人物向右看

实战 3:自定义角度

原图:扫描歪斜
操作:顺时针 3 度
结果:正向

为什么需要旋转?

原因 1:手机拍照方向错误

手机拍照时 EXIF Orientation 字段记录方向,但部分浏览器/平台不解析,显示方向错误。

原因 2:扫描方向不对

扫描的文档可能 90 度或 180 度倒置。

原因 3:照片歪斜

拍摄时手持不稳,照片微微歪斜,需要 ±1-5 度旋转校正。

原因 4:需要镜像

原因 5:视频封面方向

视频封面方向与播放方向不一致,需要旋转。

各旋转方式

90 度顺时针旋转

原图:[→]
结果:[↓](90 度顺时针)

宽高互换。

180 度旋转

原图:[→]
结果:[←](完全倒置)

宽高不变。

270 度顺时针旋转

原图:[→]
结果:[↑]

宽高互换。等同于 90 度逆时针。

水平翻转

原图:[A B]
结果:[B A]

左右镜像。

垂直翻转

原图:[A]
     [B]
结果:[B]
     [A]

上下镜像。

自定义角度旋转

原图:[→](歪斜 5 度)
操作:顺时针 -5 度
结果:[→](水平)

旋转 vs EXIF Orientation

EXIF Orientation

EXIF 中的 Orientation 字段定义图像显示方向:

含义
1正常(默认)
2水平翻转
3180 度旋转
4垂直翻转
5顺时针 90 度 + 水平翻转
6顺时针 90 度
7顺时针 90 度 + 垂直翻转
8逆时针 90 度

解决方案

#### 方案 1:修改 EXIF Orientation

只改元数据,不改图像数据,速度快:

# 用 PIL 修改 EXIF
img = Image.open('input.jpg')
img.save('output.jpg', exif=img.getexif())

但部分平台不解析 EXIF,仍显示错误。

#### 方案 2:实际旋转图像

改图像数据本身,兼容性最好:

from PIL import Image

img = Image.open('input.jpg')
img_rotated = img.rotate(-90, expand=True)  # 顺时针 90 度
img_rotated.save('output.jpg')

推荐方案

实际旋转图像最稳。修改 EXIF 在某些平台无效。

编程实现

JavaScript(Canvas)

function rotateImage(image, degrees) {
  const canvas = document.createElement('canvas');
  const ctx = canvas.getContext('2d');
  
  if (degrees === 90 || degrees === 270) {
    canvas.width = image.height;
    canvas.height = image.width;
  } else {
    canvas.width = image.width;
    canvas.height = image.height;
  }
  
  ctx.translate(canvas.width / 2, canvas.height / 2);
  ctx.rotate(degrees * Math.PI / 180);
  ctx.drawImage(image, -image.width / 2, -image.height / 2);
  
  return canvas.toDataURL('image/jpeg', 0.9);
}

function flipHorizontal(image) {
  const canvas = document.createElement('canvas');
  canvas.width = image.width;
  canvas.height = image.height;
  const ctx = canvas.getContext('2d');
  
  ctx.translate(canvas.width, 0);
  ctx.scale(-1, 1);
  ctx.drawImage(image, 0, 0);
  
  return canvas.toDataURL('image/jpeg', 0.9);
}

Python(Pillow)

from PIL import Image

img = Image.open('input.jpg')

# 90 度逆时针旋转
rotated = img.rotate(90, expand=True)
rotated.save('output_90.jpg')

# 180 度
rotated_180 = img.rotate(180, expand=True)
rotated_180.save('output_180.jpg')

# 270 度(90 度顺时针)
rotated_270 = img.rotate(-90, expand=True)
rotated_270.save('output_270.jpg')

# 水平翻转
flipped_h = img.transpose(Image.FLIP_LEFT_RIGHT)
flipped_h.save('output_flip_h.jpg')

# 垂直翻转
flipped_v = img.transpose(Image.FLIP_TOP_BOTTOM)
flipped_v.save('output_flip_v.jpg')

# 自定义角度(背景白色)
rotated_custom = img.rotate(5, expand=True, fillcolor='white')
rotated_custom.save('output_custom.jpg')

命令行(ImageMagick)

# 90 度顺时针
convert input.jpg -rotate 90 output.jpg

# 180 度
convert input.jpg -rotate 180 output.jpg

# 270 度(或 -90)
convert input.jpg -rotate 270 output.jpg

# 水平翻转
convert input.jpg -flop output.jpg

# 垂直翻转
convert input.jpg -flip output.jpg

# 自动旋转(按 EXIF Orientation)
convert input.jpg -auto-orient output.jpg

实战场景

场景 1:手机照片方向错误

iPhone 拍的照片在 Windows 上显示横向:

  1. 打开 52tool 图片旋转
  2. 上传照片
  3. 90 度旋转(方向判断后选顺时针或逆时针)
  4. 下载

场景 2:扫描文档歪斜

扫描的文档歪了 3 度:

  1. 上传图片
  2. 自定义角度:-3 度
  3. 下载

场景 3:批量旋转

100 张照片全部需要 90 度旋转:

  1. 选"批量处理"
  2. 拖入 20 张(每次上限 20)
  3. 操作:90 度顺时针
  4. 一键处理
  5. 下载所有结果

场景 4:镜像文字

照片中玻璃上的字是反的:

  1. 上传图片
  2. 水平翻转
  3. 文字变正

场景 5:制作镜像效果

风景照镜像后拼成全景:

原图 + 镜像 = 全景效果

场景 6:视频封面校正

视频封面方向不对:

  1. 截取封面
  2. 旋转校正
  3. 重新设置

自定义角度旋转

旋转角度计算

顺时针:正角度
逆时针:负角度

旋转后空白填充

自定义角度旋转后图像会出现空白角:

原图:长方形
旋转 30 度后:长方形 + 空白角

填充选项:

抠图旋转

1. 抠出主体(去背景)
2. 旋转主体
3. 合成新背景

需要图像处理软件。

旋转质量

90/180/270 度

无损旋转,每个像素对应原图。质量完美。

自定义角度

有损旋转,需要插值:

52tool 默认双三次。

与其他工具配合

旋转 + 裁剪

工具:图片裁剪

旋转后裁掉空白角,得到完美矩形。

旋转 + 压缩

工具:图片压缩

旋转后压缩,减小体积。

旋转 + 缩放

工具:图片缩放

旋转后缩到目标尺寸。

旋转 + EXIF 修正

工具:EXIF 查看

旋转后更新 EXIF Orientation,避免重复旋转。

进阶技巧

技巧 1:批量自动旋转

根据 EXIF 自动旋转:

from PIL import Image, ImageOps

img = Image.open('input.jpg')
img = ImageOps.exif_transpose(img)  # 按 EXIF 自动旋转
img.save('output.jpg')

技巧 2:透视校正

照片有透视变形(如翻拍文档有梯形畸变):

1. 检测四个角点
2. 透视变换到矩形

需要 OpenCV 等专业工具。

技巧 3:拼接全景

多张重叠照片拼成全景:

1. 特征点匹配
2. 计算变换矩阵
3. 拼接

需要专业拼接软件(如 Hugin)。

技巧 4:旋转 + 文字

旋转后文字方向不变:

# 旋转图片
rotated = img.rotate(45)

# 在新画布上添加正向文字
draw.text((x, y), "Hello", font=font)

技巧 5:批量改名

旋转后的文件加后缀:

原:photo.jpg
旋转后:photo_rotated.jpg

便于区分。

常见问题

Q: 旋转后图片体积变大了?

A: JPG 重新编码可能略微增加体积。用 90% 质量保存即可减小。

Q: 旋转后图片模糊?

A: 1) 自定义角度旋转会模糊(插值导致);2) 90/180/270 度无损旋转不模糊。

Q: iPhone 拍的照片在 Windows 显示横向?

A: EXIF Orientation 不被解析。解决:1) 用工具实际旋转;2) 或用 ImageMagick -auto-orient 自动按 EXIF 旋转。

Q: 旋转后透明背景变白色?

A: JPG 不支持透明,旋转后的空白区域填白色。需要透明输出 PNG 格式。

Q: 批量旋转有限制吗?

A: 52tool 一次最多 20 张,浏览器端处理。更多张数分批。

Q: 工具会泄露我的图片吗?

A: 52tool 旋转工具在浏览器端运行,原图不上传服务器。适合处理私人照片等敏感图片。

常见问题解答

Q: 怎么把照片从横向旋转到竖向?

A: 1) 打开 52tool 图片旋转;2) 上传照片;3) 选择"90 度顺时针"或"90 度逆时针";4) 下载。具体方向需要试一下。

Q: 怎么把照片水平翻转?

A: 同工具,选择"水平翻转"或"左右镜像"。垂直翻转是上下镜像。

Q: 旋转能撤销吗?

A: 在线工具撤销可以,保存后无法还原。建议保留原图。

Q: 怎么批量旋转多张照片?

A: 1) 选"批量处理";2) 拖入多张;3) 选旋转方向;4) 一键处理;5) 下载。

Q: 旋转后宽高对调怎么办?

A: 这是正常的。90/270 度旋转后宽高互换。180 度不变。

Q: 怎么校正歪斜的扫描件?

A: 1) 上传扫描件;2) 选"自定义角度";3) 输入校正角度(如 -3 度);4) 预览效果;5) 调整到正向;6) 下载。

总结

图片旋转翻转是基础但高频的图像处理:

记住:90/180/270 度无损旋转自定义角度有损iPhone 照片在 Windows 显示错误是 EXIF 问题