22
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MacのlocalhostにGifzoサーバを立ててGifzoを使う

Last updated at Posted at 2014-01-12

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/"

以上

使う

demo.gif

いい感じですね。ちなみにこのGIF自体はLICEcapで撮りました。

参考

22
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?