我想将我的OSX屏幕的一部分发送到IRC,并且最不小心。
许多应用已经这样做了:CloudApp,Droplr,DropBox,Jing等
问题是它们都没有返回实际图像的链接。他们返回包含图片的页面的链接,主要是因为他们可以获得广告。这对IRC没有好处;大多数IRC客户端都足够聪明,可以在看到图像的URL时显示图像,但是它们不够智能,无法从这样的框架页面中提取图像。
我想写一些能做到这一点。
Shift + Cmd + F3让我用鼠标选择一个矩形,并将图像存放在我的桌面上。这可以更改为另一个文件夹:http://osxdaily.com/2011/01/26/change-the-screenshot-save-file-location-in-mac-os-x/
我希望将此图片自动上传到互联网并在剪贴板中放置一个URL链接。
我找出问题的一半:以下bash脚本将上传图片并将链接放入剪贴板:
#! /bin/bash
# Imagebin Loader
# π 27.1.2014
#
# Upload image to imagebin.org, put url to image in clipboard, make noise
filename="$1"
# http://stackoverflow.com/questions/4651437/how-to-set-a-bash-variable-equal-to-the-output-from-a-command
url_out=$(
curl -s \
--form "nickname=$(hostname)" \
--form "image=@$filename;type=$(file --brief -L --mime-type "$filename")" \
--form "disclaimer_agree=Y" \
--form "mode=add" \
--form "Submit=Submit" \
http://imagebin.org/index.php \
-w '%{redirect_url}\n'\
)
# e.g. http://imagebin.org/288917
echo "$url_out"
# http://mywiki.wooledge.org/BashFAQ/073
number=${url_out##*/}
printf -v new_url "http://imagebin.org/index.php?mode=image&id=%s" $number
# e.g. http://imagebin.org/index.php?mode=image&id=288917
echo "$new_url"
#http://osxdaily.com/2007/03/05/manipulating-the-clipboard-from-the-command-line/
printf "$new_url" | pbcopy
say -v Trinoids "Fooo"
现在我该如何完成拼图的另一部分:每当新的屏幕截图到达桌面时,自动执行此脚本?
LINK:https://apple.stackexchange.com/questions/118698/free-screen-grabber-for-os-x
答案 0 :(得分:1)
使用Automator Folder Action在将新项目添加到文件夹时启动脚本。您可能希望将屏幕截图重定向到桌面以外的其他位置,否则添加到桌面的所有项目都将上传。
答案 1 :(得分:1)
例如,将此plist保存为~/Library/LaunchAgents/example.plist
:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>example</string>
<key>Program</key>
<string>/path/to/script</string>
<key>WatchPaths</key>
<array>
<string>~/Desktop/</string>
</array>
</dict>
</plist>
然后运行launchctl load ~/Library/LaunchAgents/example.plist
或注销并重新登录以加载plist。要稍后将更改应用到plist,请卸载并加载它。
无法使用WatchPaths
之类的通配符,但您可以编辑脚本以跳过不是屏幕截图的文件:
for f; do
[[ $f = Screenshot\ *.jpg ]] || continue
echo "$f"
done
(您还需要弄清楚如何避免为同一图像多次运行脚本。)