旋转与翻转 · 免费

图片旋转与翻转

把图片旋转四分之一圈、半圈或精确到十分之一度的任意角度,向任一方向镜像翻转,并对照网格把倾斜的地平线调平。直角旋转只移动像素而不重采样,其他任意角度都会同时显示扩展后的画布和其中能容纳的最大裁切区域。

在你的浏览器中旋转 · 无需上传,无需注册
报告问题

把图片拖到这里

PNG、JPEG、WebP、GIF、AVIF、BMP 和 SVG 都通过文件自身开头的字节识别,而不是靠文件名,所以改过名的截图也能正常加载。

最大 25 MB · 源图 40 MP · 输出 8,192 px · 绝不上传

工作原理

旋转就是一个矩阵,加上一块必须是矩形的画布。

旋转图片并不是给照片加一个效果,而是一次坐标变换:每个源像素都通过同一个矩阵映射到新画布上,真正值得回答的问题只有两个,即这块画布需要多大,以及图片覆盖不到的部分用什么填充。旋转四分之一圈时答案很简单,因为矩阵里只有 0 和 1,图片仍然恰好填满矩形。换成其他任何角度,倾斜的图片和正向的画布就对不上了,本页用闭式解同时处理这一矛盾的两种情况:能容纳全部内容的外接矩形,以及完全位于图片内部的最大正向矩形。翻转并入同一个矩阵,而不是额外再处理一遍,因此它们的应用顺序是固定且明确说明的,而不是取决于你最后按了哪个按钮。

  1. 01

    加载一张图片

    把文件拖到面板上,或选择一个文件。格式由文件自身开头的字节判断,所以被人改过文件名的截图也能正常加载,图片就在当前标签页中解码。整个过程中不会向任何地方发送任何数据。

  2. 02

    旋转、镜像或调平

    五个按钮涵盖四分之一圈旋转、半圈旋转和两种镜像,既可以在屏幕上点按,也可以用键盘操作。对于介于其间的角度,可以以十分之一度为单位拖动角度,或者使用拉直滑块,让地平线与预览上的网格线对齐。

  3. 03

    决定四角如何处理,然后导出

    倾斜后的图片不再填满一个矩形。“扩展以适应”保留每个像素,并用你选择的颜色填充四个楔形空白;“裁切以填满”取完全位于图片内部的最大矩形。两种尺寸都会在你做出选择前显示出来。

专为横躺的照片和倾斜的地平线打造

精确的直角旋转,如实的角度,无需上传。

直角旋转只移动像素,不重采样

在 90、180 和 270 度时,正弦和余弦取自精确的查找表,而不是浮点数学库,因此一张 4000 × 3000 的照片会精确变成 3000 × 4000,每个像素都完整地落到新位置。这些角度下会关闭平滑处理,导出结果只是对你加载的文件进行重新排列,而不是插值。

以十分之一度为单位拉直,对照真正的网格

倾斜的地平线几乎从来不会正好偏一整度,所以拉直控件以 0.1 度为步长,覆盖左右各 15 度,且不改动直角旋转。预览上有三分线和一条强调色的中心线,用来对齐地平线,这层叠加内容绘制在画布之上,永远不会进入文件。

四角问题的两种答案,都精确计算

“扩展以适应”给出倾斜图片的外接矩形以及其中空白部分所占的比例。“裁切以填满”求出完全位于倾斜图片内部的最大正向矩形,显示其精确尺寸,并说明会舍弃原图的多少。两者都不是估算,你可以在选择之前看清这两个数字。

无论按多少次按钮,都只是一次变换

页面保存的是对变换的描述,而不是图片的工作副本,每次都从原始文件重新绘制。因此按二十次旋转按钮的代价和按一次完全相同。真正让 JPEG 画质下降的是反复重新编码,而在你导出之前,这里一次都不会发生。

数字描述的是文件,而不是预览

预览会缩放以适应面板,并标明当前显示的百分比。旁边列出真实的输出尺寸、百万像素数、用通俗语言描述的变换链,以及用你所选的编码器和质量对样本进行试编码后测得的文件大小估算。

上限事先说明,而不是让你撞上才知道

每个文件 25 MB,源图 40 百万像素,输出最长边 8,192 像素,输出 40 百万像素。超出上限的文件会被拒绝,并告诉你是哪个数字超标;画布大到可能让手机吃不消时,即使仍在允许范围内也会给出警告。

旋转与翻转

画质、方向标签、四角和元数据。

如何把照片旋转 90 度而不损失画质?+

使用任一直角旋转按钮,并导出为 PNG 或 WebP。旋转 90、180 或 270 度时,每个源像素都会精确映射到一个输出像素,所以这一操作是重新排列而不是计算:没有颜色会与相邻像素取平均,也没有边缘会变软。本页用精确的查找表而不是正弦函数计算这三个角度,正因如此,一张 4000 × 3000 的照片才会精确变成 3000 × 4000,而不是边缘发虚的 3001 × 4000。唯一剩下的损失来自编码器,所以如果结果还要再次编辑,请选择无损格式;如果不再编辑,请把 JPEG 质量保持在 92 或以上。

为什么我的照片在一个应用里是横躺的,在另一个应用里却是正的?+

因为相机几乎肯定是按传感器自身的方向保存图片,并添加了一个 EXIF 方向标签,告诉软件要把它转过来。现代浏览器、手机和照片应用都会读取这个标签;但相当多的旧版查看器、上传表单和打印流程不会读取,所以同一个文件在一处显示正常,在另一处却是转过的。在这里加载就能一锤定音:浏览器会在绘制任何内容之前应用方向标签,所以你看到的是摆正后的版本,而导出会把这次旋转固化为真实像素,不再留下可被忽略的标签。即使不做任何其他修改,仅此一步也能修好一个每次上传都会转向的文件。

旋转几度之后,四角会怎样?+

图片在画布自身的坐标轴上不再是矩形,所以必须有所取舍,而由你来决定取舍什么。“扩展以适应”把画布扩大到倾斜图片的外接矩形:不会丢失任何内容,但边缘会出现四个没有图片的三角形楔形空白,用你选择的颜色填充,或保持透明。“裁切以填满”则相反,把画布缩小到完全位于倾斜图片内部的最大正向矩形,因此没有需要填充的地方,也完全没有背景,代价是外侧边缘。页面会同时显示两种尺寸,让你在做出选择前就看清每种选择的代价。

如何拉直倾斜的地平线?+

打开对齐网格,然后拖动拉直滑块,直到地平线与中心线平行。几乎所有拍歪的照片偏差都不到三度,所以拉直控件只覆盖左右各 15 度,以十分之一度为步长,而不是整个圆周:精度要放在问题真正所在的地方。拉直只改变倾斜角,从不改动直角旋转,所以已经摆正的照片在调平时仍然保持正向。最后选择“裁切以填满”,这是拉直照片的常规做法,因为它能去掉倾斜后露出的楔形空白。

旋转和翻转的顺序重要吗?+

重要,而这正是大多数旋转工具悄悄出错的地方。先旋转再镜像,与先镜像再旋转并不相同:把图片向右旋转 90 度再水平翻转,得到的结果与先翻转再旋转不一样。本页固定一种顺序,先在图片自身的坐标轴上镜像,再旋转,并把你按下的任何操作序列都改写成这种形式。预览下方的变换链始终显示规范形式,所以先按向右旋转再按水平翻转,会显示为先翻转、再向左旋转 90 度。屏幕上的结果完全相同,只是描述方式始终一致。同时进行两个方向的翻转是一个值得了解的特例:两个互成直角的镜像恰好等于旋转半圈,所以变换链会把它们合并为一步。

这会删除 EXIF 数据和 GPS 位置吗?+

会,而且删得干干净净,也没有保留它们的设置。导出图会绘制到一块全新的画布上并从头编码,而画布没有地方存放原图附带的元数据:没有相机型号、镜头、快门速度或光圈,没有拍摄时间,也没有 GPS 坐标。嵌入的色彩配置文件也会一并去掉,所以标记为 Display P3 的照片导出后不再带有标记,任何打开它的软件都会把它当作 sRGB 处理,饱和度高的颜色可能会略有偏移。方向是唯一效果得以保留的元数据,因为浏览器会在绘制前应用它,结果变成了真实像素。如果你需要保留元数据,这个工具并不合适。如果你本来就想去掉元数据,旋转会顺便帮你做到。

反复旋转 JPEG 会降低画质吗?+

如果工具在每次按下按钮后都重新编码,就会降低画质,而这正是常见的设计。本页从不这样做:它保存的状态只是对变换的描述,即一个角度和一个镜像标志,每次预览都从你最初加载的文件绘制。按二十次旋转,会把二十次操作合成为一个矩阵,只绘制一次,因此结果与以相同的净角度按一次完全相同。只有下载时才会编码,而且只编码一次。不过仍有一个值得了解的真实区别:四分之一圈旋转只移动像素而不改变像素值,而其他任何角度都要从多个源像素插值出每个输出像素,无论滤镜多好,细小的文字和锐利的边缘都会略微变软。

为什么导出的文件比我加载的更大?+

通常是以下三个原因叠加的结果。“扩展以适应”会增加像素,因为倾斜矩形的外接矩形比矩形本身更大:旋转 45 度时,正方形每条边约增长 41%,面积翻倍。导出也是一次全新的编码,而浏览器的编码器追求的是速度,不会像专门的压缩工具那样挤出最后几个百分点。此外,把有损源图换成无损导出,比如输入 JPEG、输出 PNG,常常会让照片体积成倍增长。“裁切以填满”通常会得到比原图更小的文件,PNG 通常会大得多,导出后再用图片压缩工具处理一遍,可以收回大部分差距。

能旋转 GIF 并保留动画吗?+

不能,加载 GIF 时页面也会告诉你这一点。GIF 在这里会被解码为静态图片,只有一帧被变换,导出的是单张图片。要保留动画,就得解码每一帧、逐帧变换、重新安排时序,再编码成新的 GIF,那是另一种工具,内存和时间开销完全不同。如果动画很重要,请在视频或动画编辑器中旋转。静态导出仍然有用,比如制作缩略图、封面图或海报帧,而且大多数预览本来也只会显示这一帧。

大小限制是多少?为什么要设限?+

单个文件最大 25 MB,源图最多 40 百万像素,成品画布最长边不超过 8,192 像素,总计不超过 40 百万像素。之所以设限,是因为每一个像素都实实在在地占用标签页的内存:解码后的图片每像素占四个字节,旋转后的副本还要再占一份,所以一张 40 百万像素的照片在编码器启动之前就已经要占用数百兆字节的工作内存。旋转会让上限比你预想的更容易触及,因为倾斜的画布比它所容纳的图片更大,而切换到“裁切以填满”往往就足以让过大的导出重新回到上限以内。当输出超过约 16.8 百万像素时,页面也会提醒你,因为有些手机浏览器会悄悄把画布上限设在这个值附近,超出时返回空白图片而不是报错。

更多专注好用的工具,随时待命。

探索不断扩充的工具合集,涵盖计算、文档、写作和日常工作。

浏览全部工具