Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Automator 苹果的自动机:jpg的压缩设置?_Automator - Fatal编程技术网

Automator 苹果的自动机:jpg的压缩设置?

Automator 苹果的自动机:jpg的压缩设置?,automator,Automator,当我运行Apple的Automator来简单地剪切一组大小相同的图像时,Automator也会降低jpg文件的质量,使其变得模糊 我怎样才能防止这种情况?是否有我可以控制的设置 编辑: 或者是否有其他工具可以完成相同的工作,但不会影响图像质量?Automator的“裁剪图像”和“缩放图像”操作没有质量设置–就像Automator通常的情况一样,简单性胜过可配置性。然而,有另一种方法可以访问CoreImage的图像处理设施,而不必借助Cocoa编程:可脚本图像处理系统,它使图像处理功能可供用户使用

当我运行Apple的Automator来简单地剪切一组大小相同的图像时,Automator也会降低jpg文件的质量,使其变得模糊

我怎样才能防止这种情况?是否有我可以控制的设置

编辑:


或者是否有其他工具可以完成相同的工作,但不会影响图像质量?

Automator的“裁剪图像”和“缩放图像”操作没有质量设置–就像Automator通常的情况一样,简单性胜过可配置性。然而,有另一种方法可以访问CoreImage的图像处理设施,而不必借助Cocoa编程:可脚本图像处理系统,它使图像处理功能可供用户使用

壳通过。你可以用它来摆弄最细微的设置,但由于它在处理上有点神秘,第二种方法可能会更好, AppleScript via是由OS X提供的一种可编写脚本的无脸背景应用程序。有裁剪和缩放命令,以及在保存为JPEG时指定压缩级别的选项

save <image> as JPEG with compression level (low|medium|high)
–对于其他比例,相应调整系数1=100%,.5=50%,.25=25%等。;对于裁剪,将比例顶点替换为因子X,将比例顶点替换为{宽度,高度}。Mac OS X Automation提供了有关和的良好使用教程


如果您想更好地控制JPEG压缩量,正如kopischke所说,您必须使用sips实用程序,它可以在shell脚本中使用。以下是在Automator中如何实现这一点:

首先获取文件和压缩设置:

“请求文本”操作不应接受任何输入右键单击它,然后选择“忽略输入”

确保变量操作的第一个Get值不接受任何输入右键单击它们,选择Ignore input,并且变量的第二个Get值从第一个Get值获取输入。这将创建一个数组,然后将该数组传递给shell脚本。数组中的第一项是提供给Automator脚本的压缩级别。第二个是脚本将对其执行sips命令的文件列表

在运行Shell脚本操作顶部的选项中,选择/bin/bash作为Shell,并选择作为Pass输入的参数。然后粘贴此代码:

itemNumber=0 压缩级别=0 存档$@ 做 如果[$itemNumber=0];然后 压缩级别=$file 其他的 echo处理$file filename=$file sips-s格式jpeg-s格式选项$compressionLevel$file-out${filename%.*}.jpg fi itemNumber=itemNumber+1 完成 itemNumber=itemNumber-1 osascript-e告诉app\Automator\显示对话框\${itemNumber}已转换的文件\按钮{\OK\}
如果你点击底部的Results,它会告诉你它正在处理什么文件。玩得开心

埃里克的代码太棒了。可以完成大部分工作。 但是,如果图像的文件名包含空格,则此工作流将不起作用。因为空格会在处理SIP时中断shell脚本。 有一个简单的解决方案:在此工作流中添加Rename Finder项。 将空格替换为u或任何您喜欢的内容。 然后,就可以走了。

17年的评论

为了避免空间问题,更改IFS比重命名IFS更明智。 备份当前IFS并将其更改为\n仅限。并在处理循环后恢复原始IFS

ORG_IFS=$IFS
IFS=$'\n'
for file in $@
do
    ...
done
IFS=$ORG_IFS
20年的评论

我将脚本更改为快速操作,没有任何压缩和确认提示。它复制文件并将原始版本重命名为_original。我还包括nyam对“空间”问题的解决方案。 您可以在此处下载工作流文件:文件已压缩,否则它将被识别为文件夹而不是工作流文件


希望这对像我一小时前那样寻找解决方案的任何人都有用。

感谢您给出了准确的答案,但不幸的是,所有这些都没有真正告诉我什么。我从未使用过AppleScript。我还想知道为什么会发生这种情况,因为我的自动化中没有任何要求压缩的内容。@Mellos:Automator操作是为简单而设计的,而不是为可配置而设计的,这意味着您在很大程度上取决于操作开发人员对其实现的决定。谢谢您的详细回答!这实际上给我带来了一条新的道路,我一定会在未来发现更多!谢谢你,埃里克!您是否还有机会共享工作流脚本本身?
ORG_IFS=$IFS
IFS=$'\n'
for file in $@
do
    ...
done
IFS=$ORG_IFS