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

copy one picture and paste it on top of the other on terminal

在这里我找到了一块 code 可以使用 applescript

查找文件夹中的所有图像并调整其大小

现在我需要对这些图像一张一张地盖章。我已经准备好一个相同大小的透明 jpg 并准备粘贴在所有这些上。

我只是缺乏在终端上执行此操作的知识,因此我可以将其与 applescript 混合使用。

有谁知道如何在不制作工作流程的情况下做到这一点?因为它需要很多时间并且让笔记本电脑忙碌

我几年前遇到过同样的问题,我找到的唯一方法是使用 Photoshop 的 Applescript(包含照片上徽标和拼合文件的复制层)。 脚本循环到文件夹的所有文件。

...但是您需要 Photoshop 来编写此脚本! 如果有帮助,我可以分享该脚本

再次更新:-)

你可以这样获取图像的高度:

identify -format "%h" image.jpg
500

宽度是这样的:

identify -format "%w" image.jpg
800

如果你想找到高度和宽度中的较小者,然后取其 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

然后您可以像这样在下面的原始命令中使用它:

convert image.jpg -gravity southeast                           \
      \( copyright.png -resize "${logosize}x${logosize} \)     \
      -composite result.jpg

我怀疑您想要 运行 使用 find 命令,是吗? :-)

find . -iname \*.jpg -exec bash -c 'echo Processing {};logosize=$(identify -format "%[fx:int(0.1*min(h,w))]" "{}"); echo $logosize;convert "{}" -gravity southeast \( copyright.png -resize "$logosizex$logosize" \) -composite "{}"' \;

更新答案

如果您想在合成徽标不变之前调整原始图像的大小,请使用如下命令:

convert image.jpg -resize 2000x1000 -gravity southeast copyright.png -composite result.jpg

如果您想在将徽标合成到未更改的原始图像之上之前调整其大小,请使用如下命令:

convert image.jpg -gravity southeast \( copyright.png -resize 700x200! \) -composite result.jpg

原答案

我会使用 ImageMagick。如果您使用 homebrew,它非常强大且安装简单。不懂就问...

假设您有一个名为 image.jpg 的图像和一个名为 copyright.png 的透明 logo/copyright。

image.jpg

copyright.png

那么做单张图片的命令就是:

convert image.jpg copyright.png -composite result.jpg

如果您的 logo/copyright 和图像尺寸不同,并且您想要强制将徽标显示在右下角,只需像这样相应地设置 -gravity

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 调用上面的内容 - 首先使文件可执行。如果不确定如何询问。

如果你想从你当前所在的目录开始递归到所有目录(文件夹)并将 logo/copyright 添加到所有图像,我会 制作它们的副本先去别的地方 然后试一试运行。命令将是:

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

也就是说... "find, starting at the current directory (.), disregarding upper/lower case (-iname), all files ending in "JPG",然后将 logo/copyright 应用于它们,在原始文件之上重新保存".