python 重复执行任务_使用Python自动执行数字艺术家的重复任务

python 重复执行任务

艺术家和设计师应该知道如何编码。 在那里,我说了。

现在,我可以深入探讨一下艺术家的思维方式和开发人员/工程师的思维方式没有什么不同,或者“非技术艺术家”的形象是相对较新的现象。 这些是另一篇文章的主题。 就本文的目的而言,只要说一点点代码就可以使您不仅更好地了解数字工具的工作原理,而且可以帮助您更有效地创建工作。

无论您是在为付费客户开展大型协作项目,还是将数字艺术用作自由形式,自由运转的宣泄引擎,都没有关系。 我们每个人都想最有效地利用我们的时间。 对我自己来说,如果我发现自己连续三次执行某项单调的任务,那我已经在考虑如何使它自动化并使计算机为我工作。

自动化意味着将脚本拼凑在一起。 编码。 当涉及与数字媒体相关的脚本任务时,很难找到比Python更合适的语言。 Python是一种非常流行的开源脚本语言,用于编写各种开源软件。

对于数字广告而言,学习Python还有其他优势。 语言语法相对易于学习, 并且 Python在所有主要平台上都可用。 这意味着无论您运行的是Linux,BSD还是这些专有操作系统之一,脚本都可以随身携带。 不仅如此,Python还与Blender和GIMP等许多数字内容创建工具很好地集成在一起。 甚至某些专有工具都在其中集成了Python。 这意味着您可以使用Python自动化那些程序中的任务,甚至可以添加特定于您特定工作方式的新功能。

您可能会说:“这很好,但要具体。我实际上可以使用Python 什么?”

我很高兴你问。

本系列文章旨在回答这个问题,让您只需要对脚本有一点了解就可以将您的脚趾插入到流中,并了解可能发生的情况。 合理的警告:如果这些文章确实激发了您对脚本编写的兴趣,我强烈建议您阅读在线提供的许多Python课程之一,包括该Python官方文档中教程

我还应该提到,我给出的示例可能使“真正的” Python开发人员感到畏缩。 很好。 最坏的情况是,我们仍然有一个脚本可以完全满足我们的需要。 最好的情况是,在本文的评论部分,我们会提供改进建议。

因此,让我们从简单的事情开始。 我们都知道,FFmpeg和ImageMagick等命令行工具通常是一种一次性进行视频或图像操作的更快方法。 假设您要做的就是对视频进行编码或对PNG进行饱和处理,然后将其转换为JPEG。 发出单个命令比启动具有完整图形界面的程序,加载源媒体然后执行一个小操作要快得多。

但是,问题在于功能强大的命令行工具(例如FFmpeg和ImageMagick)具有很多选项和灵活性。 它们做很多事情,而且都由令人眼花array乱的标志和选项组成,您需要正确输入这些标志和选项。 很难记住完成一项或两项特定任务所需的确切魔咒。

例如,假设您有一个目录,其中包含您喜欢的动画软件生成的PNG图像。 那里有数百甚至数千张单个图像。 现在假设您意识到,不需要将所有这些图像另存为16位RGBA PNG。 如果这些图像全部转换为1位黑白PNG图像,则可以节省大量磁盘空间并缩短加载时间。 当然,您可以重新渲染,但是图像已经存在。 使用FFmpeg,您可以搅动这些图像并在更少的时间内转换它们……如果您只记得执行该操作的确切命令。

幸运的是,您之前必须做几次,所以花了一些时间,并整理了一个名为make_1bit.py Python小脚本。 它的方式更容易记忆make_1bit.pyffmpeg -i something -flipflop -blah blah -please -o somethingelse或什么的。 这是脚本的内容(具有适合此列宽的换行符;有关格式化脚本的正确方法,请参见下文):



   
   
import subprocess

subprocess.call(['ffmpeg', '-f', 'image2', '-i',
'%04d.png', '-pix_fmt', 'monob', '-threads', '0',
'%04d.png'])

让我们花点时间浏览一下脚本并描述它的作用。 第一行, import subprocess ,导入一个名为subprocess的Python 模块 。 将模块视为别人已经编写的代码块。 您只需要使您的脚本知道该代码即可。 这是通过import语句完成的。 在这种情况下,您要导入子进程模块,这是一个专门用于启动命令的Python模块,就像在命令行中键入命令一样。

在下一个代码块( subprocess.call(['ffmpeg',...]) )中,您实际上是在该模块中使用代码来为您运行FFmpeg。 整个FFmpeg命令分为字符串列表。 在Python中, 列表只是数据的集合。 用方括号( [] )表示,数据的每一位都用逗号分隔。 在这种情况下,数据的每一位都是一个字符串 ,或者是一些用单引号引起来的文本。 列表中的每个字符串都是您要运行的FFmpeg命令的参数(标志),顺序正确。

在此特定示例中,我们假定脚本与图像位于同一目录中,并且图像具有编号的文件名,例如0001.png,0002.png,0003.png等。

出于组织上的考虑,您可能希望将每个参数对放在各自的行上。 这样一来,可以更轻松地了解正在发生的事情。 ( 注意:Python在代码中对“空白”(空格和制表符)非常讲究。因此,请确保使用空格或制表符不要混合!并且在缩进时使用相同数量的空格。 )这样做,您的脚本可能如下所示:



   
   
import subprocess

subprocess.call(['ffmpeg',
                 '-f', 'image2',
                 '-i', '%04d.png',
                 '-pix_fmt', 'monob',
                 '-threads', '0',
                 '%04d.png'])

现在,您所要做的就是从该目录中运行python make_1bit.py ,BOOM文件已转换! 无需记住FFmpeg的所有各种标志。 该脚本为您记住了这一点。 当然,如果您想直接运行FFmpeg(或此命令的某些变体),则很容易打开脚本文件并使这些标志可用并清楚地组织起来作为参考。 您甚至可以在脚本中添加注释,以便更轻松地知道每个标志的作用:



   
   
import subprocess

subprocess.call(['ffmpeg',
                 '-f', 'image2',      # Read input as images
                 '-i', '%04d.png',    # Input files (sequential PNGs)
                 '-pix_fmt', 'monob', # Output colorspace is 1-bit
                 '-threads', '0',     # Use all available CPU cores
                 '%04d.png'])         # Output files (overwrite input)

这就是我们的起点。 我们一次制作一个小脚本。 关键是要节省我们的时间,并通过简化和自动化重复或繁琐的任务来使我们专注于完成工作。

本系列中将会有更多内容……但是与此同时,如果您碰巧使用Python脚本来简化任务(无论是否用于创造性工作),也许您可​​以使用注释部分来解释您的工作

翻译自: https://opensource.com/life/16/9/how-to-automate-repetitive-tasks-artists

python 重复执行任务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值