bloggalleryaboutcontact

iReportでBase64な画像を出力する

iReportで画像としてバンドできるデータ型は以下の通り。

・java.lang.String
ファイル名を指定する。一番簡単。
・java.io.File
画像表現をnew File(String filename)としてFileオブジェクトとして出力する。
これだと使い勝手はjava.lang.Stringと変わらないけど、他にもいろいろ遊べるよ。
・java.net.URL
new URL(String spec)の形にして出力する(んだと思う)。
HTML的な画像表示を行いたいときに使うんだろーなーとはんなり。
・java.io.InputStream
InputStreamな型を食わせればいろいろ表示できる。
・java.awt.Image
BufferedImageとか、まあ要するにJavaで描画したやつとかはこれで解釈させる。
・net.sf.jasperreports.engine.JRRenderable
JasperReportのグラフオブジェクトとかを食わせられる。

まあなんだかんだJavaなので大抵のもんは表示できるんです。うん。
で、今回はDBにBase64エンコードして突っ込んでる画像を出力する方法。

1. 取り出す
他のデータと同じようにクエリ投げれば取り出せます。
この辺はまあiReportの基本(と言いつつちみっと面倒だったりするけど)なので略。

2. 食わせる
のはいいんだけど、上記のどれもそのままでは食わせられない。
ので型変換をいろいろかけてやるわけです。
今回はとりあえずInputStreamに食わせる方法。

目的: [Base64なString->あれやこれやして->InputStream]

というわけで逆から考える。
InputStreamで食わせるにはサブクラスであるByteArrayInputStreamで表現できればおk。

[Base64なString->あれやこれやして->ByteArrayInputStream->InputStream]
ByteArrayInputStreamのコンストラクタはbyte[]を食わせられるので、

[Base64なString->あれやこれやして->画像のbyte[]->ByteArrayInputStream->InputStream]
Base64の通訳にはApache Commons Codec(以下ACC)が使える。
# iReport3.0は標準で使える。ちょっと素敵。

[Base64なString->ACC->画像のbyte[]->ByteArrayInputStream->InputStream]
org.apache.commons.codec.binary.Base64のdecodeBase64はbyte[]を食ってbyte[]を吐くので

[BASE64なString->byte[]->ACCのdecodeBase64()->画像のbyte[]->ByteArrayInputStream->InputStream]
String->byte[]は普通にgetBytesでおk。
というわけで道が通った。
これを画像表現で書くとこんな感じになる。

new ByteArrayInputStream(new org.apache.commons.codec.binary.Base64().decodeBase64(($F{image}).getBytes()))
// $F{image}はDBから取ってきたフィールド。

この画像表現書いて表現クラスにjava.io.InputStreamを指定したら、きれいに出た出た。
わーい。
もうちょっと近道ないかなーと思いつつ、まあとりあえず出力できたのでよし。

しっかし、iReport強力ですね。
サブデータセットってのも結構使えそうな気がするし。
なんたってJavaでできてるから理解しやすいっす。
 Permalink

iPhoneの動作が劇的に改善した

まーとにかく何やっても落ちまくってたんです。
日本語入力も予測変換がめちゃ遅いし。

設定→Wi-Fi→「接続を確認」をオフにした途端めっちゃ改善した。
まだたまに落ちるけど、とりあえずこの記事をiPhoneで書けるくらいには快適になった。
デフォルトどっちなのかは忘れたけど、もしオンになってるならオフってみなー。

追記。
とりあえず、明日一日Wi-Fi自体を切って生活してみる。
快適に過ごせたらAppleに質問しよう。

→過ごしてみた。
そう劇的な変化はないので、Wi-Fi自体だめぽってわけじゃなさそう。
んで「接続を確認」をオンにしたらまた超もっさりだったのでこれは7分でやめた。

これって結構人によって反応がまちまちで、
「すげーさくさくになった!超スゲー!超エロー!」
って感じの人もいれば
「大して変わんなくね?そんな騒ぐこと?」
みたいな感じの人もいる。
元からオフってたーって人も多いっすね。

で、この差がなんなのかはよくわからんけど。
入れてる曲数とかアプリ数とか使い方によって変わるのかなーとちょっと思った。
サブ機でそんなに激しく使ってなかったりするとあんまし意識しないのかなーとかとか。
まあこの辺も調査っすね。うん。
 Permalink

Vimperator

入れてみた。

メニューが消えたwww
o押してキーワード入れたら即検索超便利。
これはマウスいらなくなるお!
ブクマ追加すらコマンドでできる。おもろい。

これはid:cohtan++せざるを得ない。
が、vimにがっつり流れそうで怖いのもちょっとある。
まあいいか。
 Permalink
1-3/3