在没有imagemagick的情况下将文本放在图像上


3

我有一个png图像文件,我想通过命令行覆盖文本(用于Makefile)。要重叠的文本是动态的,在修改图像时决定。

我知道我可以安装ImageMagick来做这件事,但我更喜欢使用一种只需要标准OS X和Xcode开发工具的方法。

我可以使用命令(或命令序列,包括AppleScript,如果有必要)来实现这一目标吗?(如果有,一个例子会很棒。)

Answers:


4

您可以尝试使用随OS X一起安装的脚本语言,例如PHP或Ruby,并使用它编写命令行脚本。

以下是使用PHP的示例:

<?php

/*
Usage
php addtext.php input.png "The text"
*/

//  The source image (taken from the command line argument)
$image = imagecreatefrompng($argv[1]);

//  The text (taken from the command line argument)
$text = $argv[2];

//  Red colour
$colour = imagecolorallocate($image, 255, 0, 0);

//  Change font as desired
$font = '/Library/Fonts/Impact.ttf';

//  Add the text
imagettftext($image, 20, 0, 20, 30, $colour, $font, $text);

//  Save the image
imagepng($image, 'out-image.png');

//  Free up memory
imagedestroy($image);

?>

将此脚本保存到名为addtext.php的文件中,然后像这样运行它...

php addtext.php image.png "Some text to add"

此示例脚本应使用与OS X一起安装的Impact True Type字体在与PHP脚本相同的目录中输出名为out-image.png的图像,并添加文本。

您可能想要阅读PHP的imagettftext函数来使用文本渲染。

类似的东西可以在Ruby,Python等中完成,但我不确定OS X为这些脚本语言安装的“内置”图像处理/创建命令/库。

希望这是一个很好的起点。


很棒......这对我来说很有帮助。谢谢!
2013年

0

我试图使用Applescript和Preview.app做你所要求的但是预览不是Applescriptable。

这是一个丑陋的黑客,但它可能适合您的目的,使用Automator设置以下工作流程:

在此输入图像描述

如果将其保存为工作流,则可以使用以下automator命令从命令行运行它:

for i in `ls {location of files to be processed}`;do `automator -i $i {location of .workflow}`;done
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.