在Mac上使用命令行创建PNG/JPG文件

15

是否有一个命令可以在Mac的终端/脚本命令中创建一个简单的PNG/JPG图片文件?

目前,我将创建一个简单的单色PNG图片文件,并使用参数指定宽度和长度。如果可以在图片上放置文本,那就更好了。


参见:http://superuser.com/questions/571003/how-to-convert-gif-files-to-png-or-jpeg-in-os-x-with-command-line - Piotr Migdal
4个回答

31

ImageMagick 套件中的命令行 convert 实用程序可以轻松创建指定尺寸的图像:

convert -size 200x200 xc:white canvas.png

使用附加选项创建带文本的图像:
convert -size 200x200 -gravity center -background white -fill black \
        label:"text goes here" canvas.png

ImageMagick网站有许多更多的用法示例

要在OSX上获取ImageMagick,您可以使用自动化构建系统,例如MacPorts或运行预制安装程序包


1
这真的是我想要的,而且更棒! - user1683774
刚刚安装了ImageMagick。第一条命令产生了错误:convert: no encode delegate for this image format 'canvas.png' @ error/constitute.c/WriteImage/1220。第二个命令产生了数千个类似的错误。OSX 10.8.1。 - Valeriy Van
ImageMagick-6.7.9-6。验证通过所有检查。来自示例http://www.imagemagick.org/Usage/text/#text_operators的任何命令都不起作用。但错误不同。 - Valeriy Van
@ValeriyVan:指示明确表示“我们建议使用MacPorts,在您的环境中自定义构建ImageMagick。”如果您查看Homebrew的brew配方或MacPorts的portfile,它们都非常复杂,涉及各种依赖项和补丁;这代表着其他人正在做艰苦的工作,以在Mac上正确构建ImageMagick并自动化它,因此您不必自己去做。另一种选择是http://cactuslab.com/imagemagick/,他们有安装程序包。在所有可用的选项中,您选择了最困难的一种。 - abarnert
"sudo port install ImageMagick" 在我的 MBP 上工作了一个小时,安装了大量软件。但解决了问题,现在 ImageMagick 命令按预期工作。这真的是魔法。最近我花了一天时间编写图像文本水印实用程序。今天我的女儿问我是否可以编写类似 montage 命令的东西。ImageMagick 对我来说真的是一个发现。 - Valeriy Van
显示剩余5条评论

5

在OS X中,没有针对此功能的Shell命令。但你有三个选项。

OS X提供了一种用Applescript进行此操作的方法:Image Events。你可以编写一个三行的Applescript代码或使用appscript或ScriptingBridge的Python或Ruby来完成所需操作,然后从Shell运行它。

OS X还内置了一些相当高级的图像支持功能,可以通过Python、Ruby、Objective-C、Applescript等访问,因此你也可以用五行代码来实现所需操作。

或者,你可以使用第三方工具来获得你所需的功能。如用户user4815162342建议的ImageMagick,可能是最好的选择。

(如果你在SU而不是SO上发布帖子,我甚至不会提及前两种可能性。)


很高兴能提供帮助。但是,如果您选择使用ImageMagick(我认为这可能是最好的答案),您应该接受其他用户的回答。 - abarnert
这对我来说是新的。我都接受。两者都很有用。实际上,我更喜欢不需要额外软件安装的方式,所以你提到的“Cocoa”更吸引我,但还需要更多的练习。但是ImageMagick提供了如此多的出色功能,也为命令行带来了巨大的能力。很幸运在这里提问。 - user1683774
虽然您可以为两个答案投票,但只能接受一个答案。无论如何,一旦开始使用Cocoa图像支持,您将遇到更多问题,但是如果您在本网站和CocoaDev周围搜索,您会找到许多答案。您将注意到的主要事情是NSImage非常高级;它模拟了图像的一般概念,可能具有多个表示形式等,因此每个人都会问“[NSImage writeToFile:]在哪里?”,答案已经在SO上了。 - abarnert
@abarnert - 我在 sips(Image Events)的 man 手册中没有看到任何可以让我创建图像的内容。 - Karric

2
一种 @mark-setchell 答案的改编:
php -r '$i = imagecreate(500, 500); imagecolorallocate($i, 0, 0, 255); imagepng($i, "sample.png");'

只要安装了Mac的默认PHP版本,这个就能正常工作。
这将在您执行命令的同一目录中创建一个名为sample.php的蓝色png文件。

你知道怎么样创建一个特定大小的文件,比如以KB为单位吗? 我想要创建一个大小超过10MB的PNG文件,但好像无法做到:/ - undefined
1
很好的问题。由于某些图像格式是经过压缩的,如果内容不多的话,它们可以是小文件。 因此,一个未经压缩的格式,比如.bmp,可能是更好的格式来处理文件大小...你可以通过将命令imagepng替换为imagebmp来创建一个BMP文件。 - undefined
1
谢谢!通过这个方法,我成功生成了一个25MB的文件 :) php -r '$i = imagecreate(40000, 40000); imagecolorallocate($i, 0, 0, 255); imagebmp($i, "sample.png");' - undefined

2

如果您不想安装任何软件,可以使用macOS内置的PHP解释器,该解释器自动包含gd库。因此,这将为您提供以下脚本:

#!/usr/bin/php -f

<?php
// Create a 200*100 image
$im = imagecreate(200, 100);

// Blue background and red text
$bg = imagecolorallocate($im, 0, 0, 255);
$fg = imagecolorallocate($im, 255, 0, 0);

// Write the string and save to disk
imagestring($im, 5, 10, 30, 'Nothing to install', $fg);
imagepng($im, "result.png");
?>

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接