我想做的是使用PHP从剪贴板中抓取图像并将其保存到图像文件中,不幸的是,PHP无法做到这一点,因此我在Mac上安装了pngpaste并使用php函数{ {1}} / shell_exec()
/ exec()
执行popen()
命令来完成这项工作。
首先,我在Mac上安装了pngpaste
:
pngpaste
然后,我尝试将图像复制或将屏幕快照截图到剪贴板,然后运行以下命令:
brew install pngpaste
工作正常! pngpaste ./screenshot.png
成功生成。
然后,我尝试将一些纯文本复制到剪贴板(这意味着剪贴板中不再有图像),然后再次运行上面的命令,它返回如下图所示(这是正确的输出,原因是剪贴板中没有图像):
然后我尝试通过PHP执行上述命令,创建screenshot.png
,index.php
中的代码非常简单:
index.php
然后我跑:
<?php
$command = '/usr/local/bin/pngpaste ./screenshot.png';
$output = shell_exec($command);
echo $output;
它也可以正常工作,如果我将截图截屏到剪贴板,也将创建php index.php
,并且如果剪贴板中没有图像,它将直接返回一些单词作为运行命令。
一切看起来不错,现在我将使用screenshot.png
。我创建了一个工作流程:
然后双击Alfred
并将命令放入框中→单击Run Script
:
如您所见,我将工作流程快捷方式设置为save
,这意味着当我按下control+command+v
时,以下命令将由Alfred执行:
control+command+v
然后我将屏幕快照复制到剪贴板,然后按快捷键/usr/local/bin/php /Users/bruce/Downloads/index.php
,猜猜会发生什么?对!再次创建control+command+v
,它也可以正常工作。
然后,当剪贴板中没有图像时,我尝试按screenshot.png
,应该返回control+command+v
,对吗?但是,猜猜是什么,什么也没有,我无法得到pngpaste: No image data found on the clipboard, or could not convert!
返回的$output
,此后,我尝试了shell_exec()
/ exec()
,但是相同,没有输出。
我试图编辑这样的代码,然后按快捷键popen()
:
control+command+v
Alfred返回了<?php
$command = '/usr/local/bin/pngpaste ./screenshot.jpeg';
$output = shell_exec($command);
$output = 'this is a test ouput' . output;
echo $output;
,这意味着变量this is a test ouput
是$output
或NULL
,但它不能为空,在以下情况下应返回empty string
剪贴板中没有图像。
所以,我的问题是:如何解决这个问题?剪贴板中没有图像时,如何获取由pngpaste: No image data found on the clipboard, or could not convert!
返回的输出?