复制一张图片并将其粘贴到终端上的另一张图片之上
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 应用于它们,在原始文件之上重新保存".
在这里我找到了一块 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 应用于它们,在原始文件之上重新保存".