图片翻转与旋转 - 摆正侧拍照片与镜像自拍
图片翻转与旋转
各项操作按你点击的顺序生效,并且可以一次撤销一步。以 90 度的奇数倍旋转会交换宽度和高度,因为图像会转到侧面。文件完全在你的浏览器中解码并重新绘制,不会离开该页面。
功能介绍
光栅图像本身没有「上」的概念。JPEG、PNG、WebP 文件里真正存放的,只是一张按宽和高排列的颜色数值网格,外加编码器顺手记录的一些附加信息;网格本身并不标注哪一端朝上,两个像素完全相同的文件,无论你把屏幕横过来还是竖过来,显示结果都一模一样。因此方向必须由一条独立的信息来表达,而这条信息只有两种放法。第一种是渲染时施加变换:查看器或应用程序在绘制时套用一个变换矩阵,像素原封不动地留在文件里,每次打开图片都重新计算一次旋转。第二种是把变换烘焙进像素数据本身:行列互换,网格被转置,出来的是一组全新的数值,不需要任何附加指令就能正确显示。图像编辑器里「提交」一次旋转时产生的正是后者,这也正是为什么那些完全不懂元数据的软件同样能把图片摆正。 这也解释了为什么按 90 度的奇数倍旋转会让宽高互换。转过一个直角时,水平轴映射到垂直轴,垂直轴映射到水平轴的反方向,四个角点落到了原矩形容纳不下的位置,于是一张 4000 × 3000 的照片转过一次 90 度后变成 3000 × 4000;而 180 度是绕中心的对称旋转,每个角点落到同一边矩形的对角,宽高保持不变。两个直角把坐标轴交换两次,于是又回到原来的宽和高。 数码相机让这件事更复杂。感光元件几乎永远是横向安装的,无论你把机身竖着还是横着握;竖拍时,传感器读到的画面相对于场景是躺着的。与其为每一帧都付出缓冲和旋转的代价,相机干脆把画面按传感器的方向写进像素网格,再在 EXIF 元数据块里写一个方向标签,告诉阅读器应该往哪一边转。EXIF 方向标签共有八个合法取值:1 和 8 保持存储顺序,3 和 6 是半周旋转,其余奇数值表示「转一个直角再加上镜像」。现在的手机和大多数图像软件都会尊重这个标签,这正好解释了同一张照片为什么在自己的手机里是正的,拖到某个上传表单或打印机驱动里却是躺着的。一旦你直接编辑像素,这个标签的含义就被破坏了:画面已经摆正,旧指令却还在那里告诉合规的阅读器「再转一次」,一个称职的查看器会老老实实把你的修正撤销掉。本工具在输出时根本不写入 EXIF,这通常正是修好后的照片所需要的;但如果你依赖相机的坐标信息、GPS 标签或拍摄时间在编辑后继续保留,就要另作打算。
重新编码是整个操作的另一半。PNG 会逐像素原样保存收到的数值,因此在 PNG 上做旋转或翻转是无损的:文件更大、加载更慢,但与原图旋转后观看完全一致。WebP 两种模式都支持,既有无损模式也有有损模式,而画布输出通常走的是有损那一路。JPEG 根本没有无损模式,它的变换与量化流水线会丢弃人眼不易察觉的信息,所以一张 JPEG 经过一次「解码再保存」之后,会比第一次保存时略微偏软。每一个解码编码来回都会带来一点点损失,因此保持原格式通常好过转换成别的格式。 色彩管理让这点损失变得看得见。相机通常按 sRGB 记录颜色,JPEG 还可能附带一个 ICC 配置文件,声明它其实属于 Adobe RGB 或 Display P3 这样的其他空间。当这样的文件被解码并画到画布上时,如果配置文件没有被采纳,浏览器就会按 sRGB 理解这些数值;重新编码时,它写出的正是它所认为的含义。如果原始数值本来就不是 sRGB,这次转换就被施加了一次,颜色随之偏移:肤色略微偏暖,高饱和度的蓝和绿出现位移。旋转 PNG 完全安全,因为数值被逐个原样复制;旋转 JPEG 可能在这一次往返中让颜色轻微偏移,而对带广色域配置文件的 JPEG 不作处理就直接旋转,偏移幅度会比你预想的更大。
使用方法
- 在浏览器中打开图片翻转与旋转工具。解码与重绘全部在本机完成,不会上传任何东西,你的文件不会离开这台设备。
- 点击「Choose an image」文件选择框,选中要修正的图片。浏览器能解码的格式都可以,包括 PNG、JPEG、WebP 和 GIF。
- 如果解码失败,文件选择框下方会给出提示而不是预览,说明这个文件并不是浏览器能读懂的图片格式。
- 点 Rotate 90、Rotate 180 或 Rotate 270 旋转图片,点 Flip horizontal 或 Flip vertical 镜像图片;每次点击都是往操作链末尾追加,而不是替换已有操作。
- 观察画布预览:每次点击后都会重绘;预览下方那行读数会更新为当前的宽 × 高(像素),后面跟着你按顺序执行过的操作。
- 留意数字什么时候会互换。单次 90 度或 270 度旋转会把 4000 × 3000 的横图变成 3000 × 4000 的竖图,这是正确行为而不是故障。
- 如果点错了,点 Undo last 只撤销最近的那一步;点 Reset 则清空整条操作链,回到完全未被改动的原始图像。
- 点 Download 保存结果。文件名会记录所执行的操作,同时保持原有格式,所以修正后的 JPEG 仍然保存为 JPEG。
- 把保存下来的文件在查看器或打印预览里再打开一次,确认方向确实固定下来了,尤其是要发给那些不理会 EXIF 方向的系统时。
计算示例
输入: 手机横握拍摄的竖构图照片,存储为 4032 × 3024 且躺倒
过程:
点 Rotate 90 —— 一个直角使坐标轴交换结果: 输出 3024 × 4032 竖图,在任何查看器中都正立,EXIF 已丢弃
输入: 由镜像 App 保存的自拍,1080 × 1920
过程:
点 Flip horizontal —— 镜像不改变宽高结果: 输出 1080 × 1920,文字与标志在各处都显示为正确方向
输入: 进纸方向错误的平板扫描件,1654 × 2339
过程:
点 Rotate 180 —— 半周旋转关于中心对称结果: 输出 1654 × 2339,文字正立,尺寸与原图完全一致
输入: 图注方向相反的报纸剪报,3000 × 2000
过程:
先 Rotate 270,再 Flip horizontal —— 一条链上的两步操作结果: 输出 2000 × 3000,方向与镜像同时修正,可逐步撤销
相关搜索
相关搜索:图片旋转, 图片翻转, 照片转正, 图片旋转90度, 图片左右翻转, 图片上下翻转。
图片旋转图片翻转照片转正图片旋转90度图片左右翻转图片上下翻转镜像图片扫描件方向修正手机照片转正旋转图片在线翻转图片免费图片方向调整横拍照片摆正自拍镜像反转批量旋转图片图片转正工具旋转图片不损失画质在线图片编辑器
常见问题
旋转或翻转图片会让画质变差吗?
完全取决于格式,因为旋转只是搬运像素,不会重新采样,因此旋转动作本身既不会凭空增加细节,也不会丢掉细节。保存为 PNG 是无损的:网格被逐个数值原样复制,结果与原图旋转后观看完全相同。WebP 两种都可以,既支持无损模式也支持有损模式,而浏览器在编码画布输出时通常选择有损那一路。JPEG 始终是有损的,它的流水线会量化并丢弃人眼不易察觉的信息,所以一张被解码再写回的 JPEG 会比原来略微偏软。对策很简单:保持原有格式,如果文件还要经过很多次编辑,优先选 PNG。
为什么转 90 度会让宽和高互换?
因为直角旋转不像 180 度那样保持形状。旋转 90 度时,水平轴被映射到垂直轴,垂直轴被映射到水平轴的反方向,原左上角那个角点最终落到了侧边的另一端。画面再也无法装进原来的矩形,宽高比例在屏幕上的朝向变了,尺寸自然交换:4000 × 3000 变成 3000 × 4000。相比之下,180 度是绕图像中心的对称旋转,每个角点落到同一个矩形的对角,因此尺寸纹丝不动。两个直角把坐标轴交换两次,最终会回到原来的宽和高。
我的 EXIF 数据、GPS 定位和拍摄时间会怎么样?
它们不会作为元数据保留在这个工具的输出里。相机按感光元件的安装方向记录画面,再把应当观看的方向单独存进 EXIF 方向标签,这正是同一张照片在不同程序里朝向不同的原因。一旦你直接改动像素,这条旧指令就变成了错的而不是消失了,信任它的查看器会把修好的图再转回你正想消除的那个躺倒版本。把新方向烘焙进网格并丢掉 EXIF 块,可以彻底避免这种自相矛盾,对任何准备发出去的照片来说这也是更稳妥的选择。代价是相机坐标、GPS 标签、拍摄时间、相机型号和版权字段会一并消失;如果你想保留这些信息,请保留原始文件。
我点击按钮的顺序会影响结果吗?
会,而且这是刻意设计的,不是功能限制。按钮把操作往链上追加,而不是把它们合并成一个角度,因为旋转与镜像不可交换。先点 Rotate 90 再点 Flip horizontal,与先点 Flip horizontal 再点 Rotate 90,得到的是两张不同的图;如果工具擅自把两者合并,偶尔就会递给你其中错误的那一张。把顺序显示在预览下方的操作读数里,意味着你随时都能看清屏幕上这张图究竟是怎么来的。Undo last 从链尾一次撤掉一步,让你在不丢掉之前步骤的前提下退出误操作;Reset 则把整条链清空,回到解码后的原图。
透明 PNG、截图和扫描件可以用吗?
三者都可以。透明通道会保留下来,因为整个重绘过程走的是带 alpha 通道的画布,所以透明背景上的 logo 依然是透明的,不会多出一个白色方框;截图同样不会变糊,因为过程中完全没有缩放。扫描件和票据是最常见的用途,把文字方向转正正是这些按钮存在的理由。如果可以选,扫描件建议存成 PNG,因为有损格式下文字边缘容易产生振铃状杂波,而这种杂波会在此后每一次重新保存时被继续放大。真正倾斜了几度的扫描件仍然需要另外校正,因为这些按钮只支持 90 度整数倍的旋转。
旋转图片时会上传到服务器吗?
不会。文件由浏览器自身的文件 API 读取,解码到内存中的画布,完成变换与重新编码后直接进入下载流程,这些字节不会经过任何远程机器。对真正会拿到这个工具来处理的人来说,图像的敏感性比听上去更高:护照和驾照扫描件、医学影像、儿童照片、内部后台截图、未发布的产品图,以及任何受保密协议约束的材料。上传式服务会把这些内容全部暴露给运营方,无论它的隐私页面如何声明事后会删除文件。由于本工具同时丢弃 EXIF,一次旋转顺便完成了一点隐私清理:修正后的副本不会再带着 GPS 坐标和相机标识信息流转。