Pebble - サムネイル高画質化 & 拡大できるよバッヂ追加 & Lightbox 対応
先の研究を元にややサムネイルを高画質化。
あと、「拡大できるよ」ってわかりやすいようにサムネイルにプラス型のバッジを付けるようにした。
このバッジはクラスパス内の enlarge.gif を置き換えることで変更可能。
バッジをつけたくない場合は enlarge.gif を削除すれば Ok ・・・なように作っているつもりだけれども未検証。![]()
また、最近巷で話題の Lightbox に対応。リンクに rel="lightbox"って埋め込まれる。
Pebble に Lightbox をインストールするには /common/jsp/header.jspf を書き換える必要があった。
うーん、Lightbox カッコイー!
ダウンロードはこちらから。
参考サイト:
・Lightbox
http://www.huddletogether.com/projects/lightbox/
・Lightbox Plus
http://serennz.cool.ne.jp/sb/sp/lightbox/index_ja.html
サムネイル作成のクオリティ向上
やっぱりサムネイルの品質もう少しなんとかならないのかってことで調べた。
どうやら ImageWriteParam っていうクラスで指定するらしい。
これを使う場合は ImageIO クラスのスタティックメソッドでカジュアルに書き出すことはできず、以下のように若干冗長になる。
private static void graphics2dImageOutputStream() throws Exception {
int width = 320;
int height = 240;
FileInputStream fis = new FileInputStream("original.jpg");
BufferedImage image = ImageIO.read(fis);
fis.close();
BufferedImage shrinkImage
= new BufferedImage(width,height, image.getType());
Graphics2D g2d = shrinkImage.createGraphics();
g2d.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION
, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING
, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING
, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
g2d.setRenderingHint(RenderingHints.KEY_DITHERING
, RenderingHints.VALUE_DITHER_ENABLE);
g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING
, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
g2d.setRenderingHint(RenderingHints.KEY_RENDERING
, RenderingHints.VALUE_RENDER_QUALITY);
g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION
, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2d.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS
, RenderingHints.VALUE_FRACTIONALMETRICS_ON);
g2d.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL
, RenderingHints.VALUE_STROKE_NORMALIZE);
g2d.drawImage(image, 0, 0, width, height, null);
ImageWriter writer = null;
Iterator iter = ImageIO.getImageWritersByFormatName("jpg");
if (iter.hasNext()) {
writer = (ImageWriter) iter.next();
}
ImageOutputStream ios
= ImageIO.createImageOutputStream(new File("1.0f.jpg"));
writer.setOutput(ios);
JPEGImageWriteParam iwparam
= new JPEGImageWriteParam(Locale.getDefault());
iwparam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
iwparam.setCompressionQuality(1f);
writer.write(null,new IIOImage(shrinkImage,null,null),iwparam);
ios.flush();
writer.dispose();
ios.close();
}
iwparam.setCompressionQuality(1f); の部分で品質を決める。
1.0fが一番品質が高い。
で、パラメータを変えて試した結果がこんなかんじ↓
0.75 : 12KB |
0.90 : 20KB |
0.95 : 28KB |
1.0 : 60KB |
0.95f くらいがむやみにファイルサイズがでかすぎず、品質も良い感じ。
体感上、品質によって書き出す速度が特に変わることはなかった。
See you later ≠ またあとでね
また英語の話。
別れ際の挨拶として使われる "See you ****" という常套句だけどなんとなくこんな↓ニュアンスにとららえてました。
"See you later" = 「またあとでね」
->その日にまた会う機会がある。それなりに知っている間柄で使われる文句。
"See you next time", "See you!", "See ya!" = 「また今度」
->その日にはたぶん会わない。また出会う予定がある、または社交辞令
ところが、アーチェリー場で挨拶すらしてなかった人に帰り際に "See you later" と言われることが何度かありました。
実は "See you later" も社交辞令的に使われることがあるということでちょっと驚いた。
BEA to Open Source its Kodo Java Persistence APIs
TSSより
・BEA to Open Source its Kodo Java Persistence APIs
・Interview Series: Kodo—towards an open source EJB 3.0 persistence engine
EJB 3.0ベースの永続化ライブラリをオープンソース化するとのこと。
元々は Kodo という名前の製品で、先日 SolarMetric って会社を買収して手に入れたモノ。
ライセンスは Apache Software License。
WebLogic Server もオープンソースにしちゃえ!
#商用の3rdパーティライブラリがわんさかバンドルされてるので簡単な話じゃないけど
このテのオープンソース製品としては Hibernate が主流だけど、うまいこと競争して互いに磨いていって欲しい。
それなりに理解すれば好き勝手カスタマイズできるのがオープンソース製品の魅力。
でも、かなりプリミティブな永続化ライブラリをいじるのはちょっとヤな感じなので商用ベースで鍛えられた製品を自由に使えるというのは良いのではないかと。