画像を表示する

ファイルとして保存されている画像(仮にtest.jpg)を表示するには、以下のようにする。

1.WAFileLibraryのサブクラスを作る(仮にMyFileLibrary)

2.ワークスペースやクラスメソッドで、以下のようなコードを実行させる。

MyFileLibrary addFileAt: 'test.jpg'

※ここでのファイル名はPharoを実行しているフォルダからの相対パスで指定する。(要確認)

※数値だけのファイル名ではエラーとなるので注意。

3.レンダリングメソッド内で以下のようにする。

html image url: MyFileLibrary / 'test.jpg'

※ここでのファイル名はディレクトリ部分を取り除いておく。(要確認)

以上。

※要確認なところが多いが、電池がなくなってきたのでこれまで。

【2012/02/27追記】

  • addFileAt:では引数のファイル名をシンボルにする関係で先頭の数値を取り除いている。そのため数値だけからなるファイル名ではエラーが発生してしまう。
  • /はurlOf:と同じで、引数にはシンボルを指定する。上記の例でもうまくいくがSeaSideのマニュアルによると#testJpgが正しいらしい。 http://book.seaside.st/book/in-action/serving-files/filelibraries/including

iPhone/iPod Touch用にviewportを設定する。

SeaSideで作成したサイトをiPod等で見ると小さく表示されてしまうため、以下のようにmetaタグにviewportを設定する。

updateRoot: anHtmlRoot
super updateRoot: anHtmlRoot.
anHtmlRoot meta
name: 'viewport';
content: 'width=device-width'

こうすればiPod等でwidth=320pxになるらしい。

元ネタ: http://d.hatena.ne.jp/ntaku/20090913/1252827348

フォームをPNGで表示する。

SeaSideでフォーム(aForm)を表示する場合は以下のようにする。

renderContentOn: html
html image form: aForm

ところがこれだとGIFファイルが生成されることになり、多色を使いたい時に困る。GIFではなくPNGファイルを生成したい時には以下のようにすればよい。

renderContentOn: html
html image document: (aForm seasideMimeDocumentType: WAMimeType imagePng)

Ubuntu 10.04でPILを使う

easy_install pil だとPNGの扱いでトラブってしまったので、apt-getでインストールした。

sudo apt-get install python-imaging

これだけだと、Imageオブジェクトにsplit()したときに、以下のエラーが生じる。

AttributeError: 'NoneType' object has no attribute 'bands'

これを回避するには、/usr/lib/python2.6/dist-packages/PIL/Image.py を修正する必要がある。1494行あたりからsplitの実装があるので、最初のif文の直前に以下のコードを挿入する。

self.load()

元ネタはこちら。 http://www.alfersoft.com.ar/blog/2011/03/30/ubuntu-linux-how-to-convert-from-html-to-jpg/

Iliadの小技(1)

現在有効なセッションを強制的に閉じる方法

ILSessionManager current removeAllSessions

サーバーを止めてもセッションは閉じられないので注意。

PharoでIliad

新しいWebアプリケーションの開発のために、PharoでIliadを使っているが苦戦中。サンプルをちょっとだけ改造しているのだけど、すぐにフリーズしてしまう。イバラの道^2ということなのかしらん。

とりあえず、Pharo-1.3-13315-OneClickへIliadをインストールする方法だけメモ。

  1. Monticello Browserを開く。
  2. 右側のペインで「http://www.squeaksource.com/MetacelloRepository」を選んで、Openをクリックする。
  3. Repository Browserの左側のペインでConfigurationOfIliadを選び、Loadをクリックする。(Configurationのインストールが始まる)
  4. Workspaceを開く。
  5. 「ConfigurationOfIliad load」を入力してDo itする。(Iliadのインストールが始まる)

途中で「ParseTreeEnvironmentが無い」というWarningが出て来るが、とりあえず無視した。

動作確認はWorkspaceで「SwazooIliad startOn: 8888」をDo itして、ブラウザで「http://localhost:8888/browse」にアクセスすればOK。

逆に止めるのは「SwazooIliad stop」をDo itする。

ILCounterApplicationはありきたりなカウンタサンプルだけど、ILHtml5ApplicationExampleはCanvasのテストもあって面白い。新しいアプリケーションの為にILTodoListApplicationを改造しているのだけど、なかなかうまくいかない。

とりあえず新規にインストールしてやり直すつもり。(その途中でこの記事を書いた)

(追記)

ILHtml5ApplicationExampleは単にメソッド内にJavaScriptが書かれているようなものだった。