画像ファイルをSVGに変換してはてなに貼り付ける

zoom.itというサイトがある。
http://zoom.it/
画像を縮小・拡大に強いベクターグラフィックス形式であるSVG形式に変換してくれるので細かい文字が多いネットワーク図やワードクラウドなどを貼りつける際に重宝する。
ただ、画像の埋め込みにjavascriptを使用しているため、そのままでははてな日記に貼り付けることができない。
調べるとグーグルガジェットを経由することで貼り付けることができるらしい。
なのでDropboxの公開フォルダを利用してグーグルガジェットを作成し、最終的にはてな日記用の埋め込みタグを作成するコードを書いた。

手順

  1. Dropboxのアカウントを取得。
  2. Publicフォルダに変換したい画像ファイルを入れる。
  3. toHATENA(画像ファイル名, localDBP=PublicフォルダのPC上のアドレス, webDBP=Publicフォルダのweb上のアドレス) をコンソールに入力。
  4. dropboxのpublicフォルダに、埋め込みタグが出力されたテキストファイル(**code.txt)が落ちてくる。


埋め込みタグを貼りつけると以下のように表示される。

使う時は下記をコンソールにコピペ。

source("http://dl.dropbox.com/u/956851/toHATENA.R")

RJSONIOとRCurlとRHTMLFormsを必要とするので必要に応じて下記サイトをパッケージダウンロードサイトに指定してダウンロードされたし。

http://www.omegahat.org/

コードは以下の通り。

toHATENA <- function(trg, localDBP="D:/My Dropbox/Public", pubDBP="http://dl.dropbox.com/u/956851"){
#make googlegadget and save to Dropbox

require(RCurl)
require(RHTMLForms)
require(RJSONIO)
XMLname <- paste(sep="", unlist(strsplit(split="\\.", trg))[1], ".xml")
url <- paste(sep="", "http://api.zoom.it/v1/content/?url=", paste(sep="/", pubDBP, trg))
resAPI <- fromJSON(getURL(url))
res <- sprintf('<Module><ModulePrefs title=""></ModulePrefs><Content type="html"><![CDATA[%s]]></Content></Module>', resAPI$embedHtml)
address <- paste(sep="/", localDBP, XMLname)
write(res, address)

#upload the XML as googlegadget

forms <-  getHTMLFormDescription("http://www.google.com/ig/submit")
fun <-  createFunction(forms[[2]])
webDBP <- paste(sep="/", pubDBP, XMLname)
fun(url = webDBP)

#hatena

reshatena <- paste(sep="", '<script src="http://www.gmodules.com/ig/ifr?url=', webDBP, '&amp;synd=open&amp;w=580&amp;h=450&amp;title=&amp;border=%23ffffff%7C3px%2C1px+solid+%23999999&amp;output=js"></script>')
out <- paste(sep="", unlist(strsplit(split="\\.", trg))[1], "code.txt")
hatenafilename <- paste(sep="/", localDBP, out)
write(reshatena, hatenafilename)
}