※ http://gifzo.net/ で現在ダウンロード出来るGifzo ver1.0.2では動かないっぽいです。https://github.com/cockscomb/Gifzo.app はver1.0.0のようなので、これをbuildすれば動きます。
概要
Gifzoって便利じゃないですか。今はGyazo GIFになってますけど。ただ、公開したくないアニメーションGIF作りたい時があるので、ローカルにGifzoサーバ立てて、Gifzoクライアントのリクエスト先をローカルにしたら公開せずにローカルに保存出来るよね、ってことでやってみた。
ちなみにLICEcapって言うアニメーションGIFを作るソフトがあって使ってみたんですが、画質が微妙だったのと、ローカルGifzoサーバが上手くいけば外のサーバにGifzoサーバ立てて使いたいと思っていたので、わざわざGifzoサーバを立てるということをやりました。
画質にそこまでこだわらずにアニメーションGIF作りたい、って話だったらほとんどLICEcapで事足りると思います。
あとWindows版Gifzoには元々ローカルに保存する機能あるらしいです。
やり方
gyazo-sinataraを改造する
ここを参考にgyazo-sinatraを改造します。
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..16d538e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/public/images/*
diff --git a/app.rb b/app.rb
index 5a2328e..e2cc530 100644
--- a/app.rb
+++ b/app.rb
@@ -10,10 +10,10 @@ module Gyazo
configure do
set :dbm_path, 'db/id'
set :image_dir, 'public/images'
- set :image_url, 'http://gyazo.send.sh/images'
+ set :image_url, 'http://localhost:9292/images'
end
- post '/' do
+ post '/gyazo' do
id = request[:id]
data = request[:imagedata][:tempfile].read
hash = Digest::MD5.hexdigest(data).to_s
@@ -23,5 +23,14 @@ module Gyazo
"#{options.image_url}/#{hash}.png"
end
+
+ post '/' do
+ data = request[:data][:tempfile].read
+ hash = Digest::MD5.hexdigest(data).to_s
+ File.open("/tmp/#{hash}.mp4", 'w'){|f| f.write(data)}
+ ret = system("sh convert_mp4togif.sh #{hash}")
+
+ "#{options.image_url}/#{hash}.gif"
+ end
end
end
diff --git a/convert_mp4togif.sh b/convert_mp4togif.sh
new file mode 100644
index 0000000..f38fc94
--- /dev/null
+++ b/convert_mp4togif.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+set -e
+
+HASH=$1
+
+/usr/local/bin/ffmpeg -i /tmp/${HASH}.mp4 -r 10 /tmp/${HASH}_%04d.png
+/usr/local/bin/gm convert -delay 20 /tmp/${HASH}_*.png $(dirname $0)/public/images/${HASH}.gif
+rm -f /tmp/${HASH}*
+
改造済みのものがここにあるので、git clone git@github.com:takc923/gyazo-sinatra.git
したら上のdiff適用したものが手に入ります。
必要なソフトウェアをインストールする
$ brew update
$ brew install graphicsmagick ffmpeg
$ sudo gem install sinatra rack
サーバ起動
gyazo-sinatraのルートディレクトリで
$ rackup
Gifzoを落としてアップロード先をlocalにする
http://gifzo.net/ からGifzoをダウンロード。
ターミナルで次のコマンドを打ってアップロード先をlocalhostにする。
$ defaults write net.gifzo.Gifzo url -string "http://localhost:9292/"
以上
使う
いい感じですね。ちなみにこのGIF自体はLICEcapで撮りました。