開発したアプリなど一覧

オレオレ gyazo サーバを JPEG 対応にする

記事内にアフィリエイトリンクを含む場合があります

Gyazo, 通常は全ての画像を png で保存するんだけど、png は写真やゲームのスクリーンショットなど、色数の多い画像を扱うのにあまり向いていない。なのでそういった画像の場合には jpeg へ変換する様 upload.cgi を修正した。

画像編集には RMagick を利用しています。

#!/home/ryomatsu/.rbenv/shims/ruby # -*- ruby -*- # # $Date$ # $Rev$ # require 'cgi' require 'digest/md5' require 'sdbm' require 'RMagick'

cgi = CGI.new("html3")

id = cgi.params['id'][0].read imagedata = cgi.params['imagedata'][0].read hash = Digest::MD5.hexdigest(imagedata)

create_newid = false if not id or id == "" then id = Digest::MD5.hexdigest(cgi.remote_addr + Time.now.to_s) create_newid = true end

dbm = SDBM.open('db/id',0644) dbm[hash] = id dbm.close

filename = "img/#{hash}.png" File.open(filename,"w").print(imagedata)

if imagedata.bytesize > 100000 image = Magick::Image.from_blob(imagedata).first filename = "img/#{hash}.jpeg" image.write(filename) end

headers = {} if create_newid then headers = {"X-Gyazo-Id"=>id} end

cgi.out(headers){"http://gyazo.loumo.jp/#{filename}"}

色数の多い、と書いたがあれこれ考えるのが面倒くさいので単純に png のファイルサイズが 100k 超えたら Jpeg に変換したものも保存、クライアントへも Jpeg の URL を返します。

一行目が自分の環境のままだがまあいいか。。。

Sponsored Link

コメント

タイトルとURLをコピーしました