Terminal 复制一张图片并将其粘贴到终端上的另一张图片上

Terminal 复制一张图片并将其粘贴到终端上的另一张图片上,terminal,applescript,automator,Terminal,Applescript,Automator,在这里,我找到了一个可以用applescript查找和调整文件夹中所有图像大小的文件 现在我需要一张一张地贴在这些图片上。我已经有一个透明的jpg准备与相同的大小,并准备粘贴在所有他们 我只是缺乏在终端上做这件事的知识,所以我可以把它和applescript混合在一起 有人知道如何在不创建工作流程的情况下执行此操作吗?因为这需要花费很多时间,让笔记本电脑保持忙碌我几年前也有过同样的问题,而我找到的唯一方法是使用Photoshop(复制层包含照片上的徽标并展平文件)编写一个Applescript。

在这里,我找到了一个可以用applescript查找和调整文件夹中所有图像大小的文件

现在我需要一张一张地贴在这些图片上。我已经有一个透明的jpg准备与相同的大小,并准备粘贴在所有他们

我只是缺乏在终端上做这件事的知识,所以我可以把它和applescript混合在一起


有人知道如何在不创建工作流程的情况下执行此操作吗?因为这需要花费很多时间,让笔记本电脑保持忙碌

我几年前也有过同样的问题,而我找到的唯一方法是使用Photoshop(复制层包含照片上的徽标并展平文件)编写一个Applescript。 脚本循环到文件夹的所有文件

。。。但是这个脚本需要Photoshop! 如果脚本有帮助的话,我可以分享它。

再次更新:-)

您可以获得如下图像的高度:

identify -format "%h" image.jpg
500
identify -format "%w" image.jpg
800
convert image.jpg -gravity southeast                           \
      \( copyright.png -resize "${logosize}x${logosize} \)     \
      -composite result.jpg
convert image.jpg -resize 2000x1000 -gravity southeast copyright.png -composite result.jpg
convert image.jpg -gravity southeast \( copyright.png -resize 700x200! \) -composite result.jpg
convert image.jpg -gravity southeast copyright.png -composite result.jpg
宽度如下:

identify -format "%h" image.jpg
500
identify -format "%w" image.jpg
800
convert image.jpg -gravity southeast                           \
      \( copyright.png -resize "${logosize}x${logosize} \)     \
      -composite result.jpg
convert image.jpg -resize 2000x1000 -gravity southeast copyright.png -composite result.jpg
convert image.jpg -gravity southeast \( copyright.png -resize 700x200! \) -composite result.jpg
convert image.jpg -gravity southeast copyright.png -composite result.jpg
如果您想找到高度和宽度中较小的一个,然后将10%的高度和宽度作为徽标大小,并将其设置为整数,您可以执行以下操作:

identify -format "%[fx:int(0.1*min(h,w))]" image.jpg
50
如果你想把它放在一个变量中,你可以这样做

logosize=$(identify -format "%[fx:int(0.1*min(h,w))]" image.jpg)

echo $logosize
50
然后,您可以在下面的原始命令中使用它,如下所示:

identify -format "%h" image.jpg
500
identify -format "%w" image.jpg
800
convert image.jpg -gravity southeast                           \
      \( copyright.png -resize "${logosize}x${logosize} \)     \
      -composite result.jpg
convert image.jpg -resize 2000x1000 -gravity southeast copyright.png -composite result.jpg
convert image.jpg -gravity southeast \( copyright.png -resize 700x200! \) -composite result.jpg
convert image.jpg -gravity southeast copyright.png -composite result.jpg
我想你会想用
find
命令来运行它,不是吗?:-)

更新的答案

如果要在合成顶部的徽标之前调整原始图像的大小,请使用以下命令:

identify -format "%h" image.jpg
500
identify -format "%w" image.jpg
800
convert image.jpg -gravity southeast                           \
      \( copyright.png -resize "${logosize}x${logosize} \)     \
      -composite result.jpg
convert image.jpg -resize 2000x1000 -gravity southeast copyright.png -composite result.jpg
convert image.jpg -gravity southeast \( copyright.png -resize 700x200! \) -composite result.jpg
convert image.jpg -gravity southeast copyright.png -composite result.jpg
如果要在未更改的原始图像上合成徽标之前调整徽标的大小,请使用以下命令:

identify -format "%h" image.jpg
500
identify -format "%w" image.jpg
800
convert image.jpg -gravity southeast                           \
      \( copyright.png -resize "${logosize}x${logosize} \)     \
      -composite result.jpg
convert image.jpg -resize 2000x1000 -gravity southeast copyright.png -composite result.jpg
convert image.jpg -gravity southeast \( copyright.png -resize 700x200! \) -composite result.jpg
convert image.jpg -gravity southeast copyright.png -composite result.jpg
原始答案

我会用ImageMagick。如果您使用
自制
,它的功能非常强大,安装非常简单。如果你不知道如何

假设您有一个名为
image.jpg
的图像和一个名为
copyright.png
的透明徽标/版权

image.jpg

版权所有.png

然后,执行单个图像的命令将是:

convert image.jpg copyright.png -composite result.jpg
find . -iname "*.jpg" -exec convert "{}" copyright.png -composite "{}" \;

如果您的徽标/版权和图像大小不同,并且您希望强制徽标位于(比如)右下角,只需相应地设置
-gravity
,如下所示:

identify -format "%h" image.jpg
500
identify -format "%w" image.jpg
800
convert image.jpg -gravity southeast                           \
      \( copyright.png -resize "${logosize}x${logosize} \)     \
      -composite result.jpg
convert image.jpg -resize 2000x1000 -gravity southeast copyright.png -composite result.jpg
convert image.jpg -gravity southeast \( copyright.png -resize 700x200! \) -composite result.jpg
convert image.jpg -gravity southeast copyright.png -composite result.jpg

如果要执行文件夹中的所有JPEG,则需要循环:

#!/bin/bash
shopt -s nullglob
shopt -s nocaseglob

for f in *.jpg; do
   convert "$f" copyright.png -composite "$f"
done
顺便说一下,你不能有一个透明的JPEG格式-该格式不支持透明度

如果您真的想使用Applescript-我不知道为什么会有人这样-您可以使用
do shell script
调用上述命令-首先使文件可执行。询问是否不确定如何进行

如果您希望从当前所在的目录(文件夹)开始向下递归到所有目录(文件夹),并将徽标/版权添加到所有图像中,我将首先在其他地方复制它们并进行试运行。命令是:

convert image.jpg copyright.png -composite result.jpg
find . -iname "*.jpg" -exec convert "{}" copyright.png -composite "{}" \;

那就是说。。。“从当前目录(.)开始查找以“JPG”结尾的所有文件,不考虑大写/小写(-iname),并将徽标/版权应用于这些文件,在原始文件的顶部重新保存。”

非常感谢。我没有photoshop,我想用命令行会非常强大,所以我会留下来看看其他人有没有想法。你说得对,这是一个png,对不起。applescript是为了避免制作bash,因为我已经做了调整大小的工作。在我所有的搜索中,我确实找到了一些关于ImageMagick的东西!但从来没有解释过。非常感谢你!你帮了大忙。要尝试一下。如果愿意,您可以将调整大小添加到上面的命令中,如下所示:
convert image.jpg-resize 1024x768 copyright.png-composite result.jpg
我正在使用bash,因为它已经完成了。文件夹中还有许多其他文件夹。我应该使用find then而不是copyright.png,对吗?它工作得很好。去葡萄牙吧,让我给你买杯啤酒。不,我非常乐意为您效劳。祝你好运