如何在一次操作中将大量数码照片旋转180度?


20

我用GoPro拍摄了几千张颠倒的图像。

我正在寻找一种方法,一个真正的应用程序,可以一次操作将它们全部翻转180度。

我已经查看了GoPro自己的软件中的每个选项,但并非仅针对静止图像。制作视频时可以旋转,但是我想保留单个图像。

我在Windows上。



jpegtran是必经之路。它可以无损地旋转和/或翻转JPEG,并且由于它是一个CLI应用程序,因此很容易从脚本中调用。
萨尔赫·博尔希

Answers:


31

我会JPEGclub.org的列表中推荐任何应用程序,该应用程序将为Independent JPEG Group开发和维护软件。他们有一个称为的免费代码jpegtran,可以进行一些基本转换(例如旋转),而无需重新编码图像。

以“幼稚”的方式旋转图像(渲染为位图,重新定位位图并重新保存)会导致JPEG伪像增加 —且文件更大而有用数据更少。

上面的列表包含众所周知的“正确方法”执行的软件。其他软件也可以(也许使用不同的代码库),但是不幸的是ImageMagick并不是其中之一。但是,截至2016年8月,包括Windows在内的许多不同计算平台有87种不同的选择。


注释中的注释:OP根据此答案使用了此循环:

FOR %f IN (.\Src\*.*) DO jpegtran.exe -rotate 180 %f .\Rotated\%~nxf

效果很好。


1
请注意,无损旋转仅在每个图像的每个尺寸为16像素的倍数时才起作用-如果未使用色度二次采样,则为8。否则,多余的像素将丢失,或者图像将被边框填充。例如,1080 不是 16的倍数!
Gnubie

2
我第二次推荐jpegtran; 更好的是,如果您关心保持EXIF的缩略图和Orientation标签一致,则可以考虑exiftranJPEGclub列表中不存在哪些内容,但它是无损的。我的命令(在Linux上)是exiftran -i -1 *.jpgor find . -name '*.jpg' -print0 | xjobs -0 -l 10 exiftran -i -1;这将需要适应Windows Shell。
Toby Speight

@Toby很好的补充。列出的程序中的许多(大多数?)也将保留和更新元数据,这是我建议其中一个而不是jpegtran直接推荐的原因之一。
mattdm '16

谢谢!我在Windows上使用了jpegtran。180度旋转正是我所需要的。我将精确的批处理命令放在问题中以供将来参考。
Johns-305

@ Johns-305很高兴我可以提供帮助。关于问题的编辑,请参见meta.photo.stackexchange.com/questions/1601/…–
mattdm

9

您可以将ImageMagick与以下rotate选项一起使用:

convert image.jpg -rotate 180 result.jpg

您应该能够将此命令应用于多个文件,具体取决于您的环境。


10
请注意,尽管这样会重新编码jpeg,从而降低质量。
mattdm

8

在Windows上,您可以在两次操作中都不需要任何其他软件的情况下进行操作。在文件资源管理器中选择要旋转的文件,右键单击并两次“向右旋转”(或向左旋转)。如果图像允许(例如尺寸不“有趣”),它将无损地完成。


什么是“有趣”尺寸?为什么照片的尺寸会阻止无损旋转?
scottbb

2
阅读后,“ Windows Photo Viewer”旋转是否无损?, 我现在知道了。两个尺寸都必须是8的倍数才能无损旋转。
scottbb '16

1
这是最好的答案。我加入该网站只是为了对此表示赞同。
FI12

5

您可以在Windows上使用xnview,它具有一些批处理模式处理功能,并且对于图像的简单旋转,还可以选择基于exif数据旋转图像。

选择所有图像(甚至正确定向的图像!它会知道它们已经定向好了),“根据exif旋转”,它将完成此操作(无需重新计算jpg,因此不会损失质量)。

就像他们在http://newsgroup.xnview.com/viewtopic.php?t=1420上说的那样 :

为此,请选择所有图像,然后选择“工具> JPG无损转换”(或工具栏中的符号“ JPG无损转换”下拉列表)。在对话框中,选中带有“ EXIF”的按钮,然后按“ Go”。XnView将基于EXIF方向标记永久旋转图像。

下次,如果您有足够的gopro,则可能还要检查它的功能:https ://gopro.com/support/articles/what-is-auto-image-rotation


GoPro是否确实保存了正确的EXIF方向数据?Hero4 / Session具有方向传感器,但我认为任何较旧的型号都没有。
vclaw 2016年

4

假设您的照片是JPEG格式,那么我对JPEGCrops相当偏爱,JPEGCrops是用于图像的无损批处理的简单免费工具。

您可以裁剪为特定的宽高比和/或旋转。


4

我可以建议仅在Windows上运行的Irfanview批处理模式。Irfanview也适用于简单的编辑,但是它不是GIMP。

安装后,选择“文件|批量转换/重命名”。从那里开始有点棘手,您需要选择所有文件,需要指定目标文件夹,并且需要单击“高级”按钮以查看“高级”选项。它可以旋转+/- 90°,但是要旋转180°,您需要在最右边选择精细旋转并输入180°。请注意,您还可以调整它们的大小,更改JPEG质量并重命名它们。

您也可以通过停留在GUI上并使用键盘来相当快地完成此操作。打开图片文件夹中的任何文件。按两次“ R”以旋转两次。然后按Ctrl-S保存。将显示两个窗口,一个是典型的文件对话框,第二个是JPEG压缩(如果GoPro的默认格式是JPEG)。我会确保质量因子至少为90%。然后保存文件;您应该可以按Tab键或Alt-S进行保存。可能会出现一个“您确定”类型的对话框(可能可以将其关闭)。然后,只需按空格键即可前进到文件夹中的下一个文件。如果您有50多个文件,则批处理可能会更快。十个文件,我就是做上面的。

Irfanview的关键在于它类似于Blender,它不会询问您是否要保存是否修改图像。


3
这样会造成有损的旋转-旋转时会旋转,然后重新保存JPEG,因此质量下降。在IrfanView中,最好使用“ JPEG无损旋转”功能(Shift + J)。请注意,您可以使用缩略图视图选择所有图像,然后一次旋转它们。
vclaw

1
@RocketFeathers-Irfanview是在Windows环境中无损执行此操作的最简单工具。但是,就像vclaw所说的那样,最好使用“ JPEG无损旋转”来实现。编辑您的答案以反映这一点,我会投票赞成。
Michael

“如果不修改图像,它不会询问您是否要保存。” -可以在选项>属性/设置...>要求在程序退出时保存更改来进行更改。
怀特先生

3

FSViewer是可以执行此操作的有用程序。

打开图像所在的文件夹,选择所有要旋转的文件夹,按F4键,然后在打开的窗口中转到“批量转换”选项卡。点击右下角的“高级选项”,转到“旋转”标签。选中“翻转/旋转”,然后选择“旋转”,然后在下面选择“ 180”,然后单击“确定”。设置您要保存这些文件的位置,然后单击“转换”。

编辑:一种更快,更轻松的方法就是选择所有想要的图像,然后在工具栏中点击两次“向右旋转并保存”。对于JPEG应该是非破坏性的。


3

使用Windows,您可以在资源管理器中标记所有它们,然后右键单击并选择顺时针旋转。这样做两次,您的图片现在就正确地定向了。


2

你知道GIMP吗?有一个名为BIMP的插件,可让您使用图形界面对一组图像执行相同的操作。您可以使用Windows的官方安装程序轻松安装它。

您也可以将它们重新保存为其他格式或不同的压缩率,以免质量损失很大。

专业提示:我做到了:D


2
我认为您的意思是说“免责声明”而不是“专业提示”:p但是很棒的软件!我偶尔需要对GIMP进行批处理操作,而代之以编写matlab代码。下次我会记住您的工具:)
Tasos Papastylianou

1

ImageMagick是一组在图像上运行的命令行工具,您可以将这些工具与基本的Unix Shell命令结合使用,以将同一命令应用于一组文件。如何使用imagemagick旋转目录中的所有图像有很多很好的例子


嗯...如果OP在Windows上并且不使用Cygwin ...?:)可能想添加“和Windows批处理文件”或扩展答案以指示ImageMagick不一定是仅UNIX的解决方案,而只是命令行之一。
inkista

1
今天下午将尝试一下。Windows二进制文件可用。
Johns-305

1

我个人使用Adobe Lightroom。可以轻松地批量旋转和编辑图像,只需选择要旋转的图像,右键单击,然后选择通过旋转180度来变换图像的选项。

如果您始终处理需要批处理的数千张图像,特别是如果它比旋转更复杂(例如调整颜色或曝光),则LR可能是一笔不小的投资。

我不喜欢Lightroom是封闭源代码,要花钱并且不能在Linux系统上运行。但是,我发现这些功能远远超出了免费提供的功能。


0

您可以使用LiveBlox并构建管道以允许旋转图像。http://liveblox.org上的演示版具有旋转块,因此可以完成此操作。

有一个教程https://www.youtube.com/watch?v=kY0e5msQuiU ,其中显示了如何制作批处理图像缩放器,您只需要用旋转器替换固定大小的调整大小即可进行旋转。

这使您只需单击即可处理每个图像。


-1

$表示* jpg中的F;转换-rotate 180 $ F“ $(basename $ F .jpg)_R.jpg” && echo“ Done $ F”; 做完了

说明:*对于命令的.jpg部分中的F,会将文件名分配给变量,此变量可稍后调用以将文件重命名为[原始文件名} _R.jpg

“做转换-rotate 180”告诉计算机,你想你的图像转换,通过旋转180度。

命令的“ $(基本名称$ F .jpg)_R.jpg”部分指示新的文件名。

&&告诉计算机比其他命令来了,但该计算机只允许如果先前(旋转和重命名)命令成功执行的命令。

echo“ Done $ F”告诉计算机告诉您(“ echo”告知您)每个文件已成功旋转。该命令的$ F子部分正在调用初始文件名变量,因此输出可能会说出“ Done file1.jpg”的效果。

而且,需要sh / csh / bash才能使这部分工作。


5
这可能是可行的,但没有解释,这不是一个好答案。请说明在什么情况下该解决方案(如果适用)。
无效

1
这是使用ImageMagick扩展为null的答案吗?
MikeW

如果*_R.jpg目录中已经有文件,则无法按预期工作。
pts

谢谢您的澄清,我不确定在Windows上安装UNIX Shell是否可行,但还是如此。
无效

pts,您可以将_R.jpg更改为所需的内容(例如“ _rotated.jpg”)。您是正确的,如果目录中已经有_R.jpg文件,这将是有问题的。
SB博士
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.