既に色んな人がやっている通り、 gyazo は簡単に作れる。
サーバ
サーバ側の仕様は
- "imagedata" というパラメータ名で画像をpostするリクエストを期待する
- レスポンスは text/html でも text/plain でもいいので、とにかく任意のテキストを返す(普通は生成した画像の url)
use strict; use warnings; use Digest::MD5 qw/md5_hex/; use File::Copy qw/copy/; use Plack::Builder; use Plack::Request; our $UPLOAD_DIR; our $BASE_URL = "http://example.com/your/gyazo/path"; BEGIN { $UPLOAD_DIR = $ENV{UPLOAD_DIR} || "/path/to/image/directory"; unless (-d $UPLOAD_DIR) { umask(0); mkdir ("$UPLOAD_DIR", 0777); } } my $app = sub { my $env = shift; my $req = Plack::Request->new($env); my $up = $req->uploads->{imagedata}; open my $fh, "<", $up->tempname; my $body = do {local $/; <$fh>}; close $fh; my $hash = md5_hex($body); (my $ext = $up->filename) =~ s/^(.+)\.(.+)$/$2/; my $dst = sprintf '%s/%s.%s', $UPLOAD_DIR, $hash, $ext; copy($up->tempname, $dst); my $return = "$BASE_URL/$hash.$ext"; return [ 200, ['Content-Type' => 'text/html; charset=utf-8'], [$return] ]; }; builder { enable_if { $_[0]->{REMOTE_ADDR} eq '127.0.0.1' } "ReverseProxy"; $app; };今のところ gyazo クライアントはどれも png 形式で送ってくる。 でもまあ今後違うクライアントが出てくるかもしれないので。
クライアント
クライアントが無ければ話にならない。- windows http://exe.tyo.ro/2012/02/gyazowingyazowin.html ここからありがたくいただく。 windowsアプリをビルドする環境構築とかしたくない。
- mac 知らん。 公式の github リポジトリの中にあるらしい。 https://github.com/gyazo/Gyazo/blob/master/Gyazo/script 簡単な ruby スクリプトなので誰でも使えるだろう。 さて gyazo 作ったはいいけど、実際使うかっていうとそんな使わない。 やりたかっただけベース。