加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

需要裁剪调整大小?300000个文件.运行时间= 4天.如何加速我的bash

发布时间:2020-12-16 01:48:46 所属栏目:安全 来源:网络整理
导读:我正在制作视频游戏中时光倒流.我拍的所有照片都是以4:3宽高比拍摄的.jpg图像. 2592×1944分辨率.我希望他们在1920×1080时都是16:9. 我写了一个小脚本来做这个,但过程不是很快.我花了大约17分钟来裁剪和调整750张图片.我总共需要处理大约300,000个,并且可
我正在制作视频游戏中时光倒流.我拍的所有照片都是以4:3宽高比拍摄的.jpg图像. 2592×1944分辨率.我希望他们在1920×1080时都是16:9.

我写了一个小脚本来做这个,但过程不是很快.我花了大约17分钟来裁剪和调整750张图片.我总共需要处理大约300,000个,并且可能会在大约50,000个批次中进行处理.这是每批18小时45分钟,计算总计超过4.5天.

那么有谁知道我可以加快这个计划的方式?

这是我写的bash脚本:

#!/bin/bash  

mkdir cropped

for f in *.JPG
do
    convert $f -resize 1920x1440 -set filename:name '%t' cropped/'%[filename:name].JPG' #Resize Photo,maintain aspect ratio
    convert cropped/$f -crop 1920x1080+0+$1 -set filename:name '%t' cropped/'%[filename:name].JPG' #Crop to 16:9 aspect ratio,takes in $1 argument for where to begin crop
done

echo Cropping Complete!

在循环中每行之前和之后放置一些echo命令会发现调整大小比裁剪需要更多的时间,我想这并不奇怪.我尝试过使用mogrify -path cropped -resize 1920×1440! $f代替转换$f -resize但速度似乎没有太大差别.

那么,我可以用任何方式加快运行时间吗?

奖励积分,如果你能告诉我一个简单的方法,在程序运行时给出一个简单的进度指示(类似“750个文件中的421个,完成56.13%”).

如果您可以添加命令从每个帧输出.mp4文件,可以在SONY Vegas等软件程序中编辑,可以获得额外奖励积分.我已经设法使用这些照片中的mencoder制作视频文件(.avi),但最终的视频无法在我尝试过的任何视频编辑器中使用.

解决方法

一些事情让人想起……

首先,不要为每个图像启动两次ImageMagick,一次调整大小,一次调整它就可以一次完成两个操作.所以,我只做一个,而不是你的两个转换命令

convert image.jpg -resize 1920x1440 -crop 1920x1080+0+$1 cropped/image.jpg

其次,我没有看到你用set命令做什么,有文件名,但你可以在shell中做到这一点.

第三,我建议你使用GNU Parallel(我每天定期处理超过65,000张图像).它易于安装,并确保您支付的所有可爱CPU核心保持忙碌状态.使用它的最简单方法是,不是运行命令,而是回显它们并将它们并行管道

#!/bin/bash  
mkdir cropped

for f in *.jpg
do
   echo convert "$f" -resize 1920x1440 -crop 1920x1080+0+$1 cropped/"$f"
done  | parallel

echo Cropping Complete!

最后,如果你想要一个进度表,或者指示完成了多少以及剩下要做什么,请使用–eta选项(eta =预计到达时间)来并行,它会告诉你有多少工作和多少时间还剩下

当你对并行有信心时,你可能会像这样运行整个过程:

parallel --eta convert {} -resize 1920x1440 -crop 1920x1080+0+32 cropped/{} ::: *.jpg

我创建了750张与你相同尺寸的图像并以这种方式运行它们需要我的中等规格iMac 55秒来调整大小并裁剪很多 – YMMV.请添加评论并说明你是如何进行的 – 处理时间与并行有多长.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读