画像ファイルをSVGに変換してはてなに貼り付ける
zoom.itというサイトがある。
http://zoom.it/
画像を縮小・拡大に強いベクターグラフィックス形式であるSVG形式に変換してくれるので細かい文字が多いネットワーク図やワードクラウドなどを貼りつける際に重宝する。
ただ、画像の埋め込みにjavascriptを使用しているため、そのままでははてな日記に貼り付けることができない。
調べるとグーグルガジェットを経由することで貼り付けることができるらしい。
なのでDropboxの公開フォルダを利用してグーグルガジェットを作成し、最終的にはてな日記用の埋め込みタグを作成するコードを書いた。
手順
- Dropboxのアカウントを取得。
- Publicフォルダに変換したい画像ファイルを入れる。
- toHATENA(画像ファイル名, localDBP=PublicフォルダのPC上のアドレス, webDBP=Publicフォルダのweb上のアドレス) をコンソールに入力。
- dropboxのpublicフォルダに、埋め込みタグが出力されたテキストファイル(**code.txt)が落ちてくる。
埋め込みタグを貼りつけると以下のように表示される。
使う時は下記をコンソールにコピペ。
source("http://dl.dropbox.com/u/956851/toHATENA.R")
RJSONIOとRCurlとRHTMLFormsを必要とするので必要に応じて下記サイトをパッケージダウンロードサイトに指定してダウンロードされたし。
コードは以下の通り。
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, '&synd=open&w=580&h=450&title=&border=%23ffffff%7C3px%2C1px+solid+%23999999&output=js"></script>') out <- paste(sep="", unlist(strsplit(split="\\.", trg))[1], "code.txt") hatenafilename <- paste(sep="/", localDBP, out) write(reshatena, hatenafilename) }