iPod Photo登場!動画対応は間違い、正しいのは写真だ

ipod_photo.png
Appleからカラー液晶を搭載して写真表示に対応したiPod Photoが発表されたが、発表の際にスティーブ・ジョブスが面白い事を言っている


「われわれの競争相手がやっていることを見ると、動画の方へと動いている。だが、動画は大きすぎ、重すぎる上に携帯プレーヤーの画面は小さい。動画は、これから進む方向としては間違っていると思う。正しいのは写真だ。(デジタル写真の増加により)皆がコンテンツを持ち、著作権を有している」

これは、僕個人の意見とも非常に近いので、ちょっと嬉しい。自分が常日頃から考えてるのは、素人がパソコンを活用して楽しむ事が出来るのは、動画よりも写真であるという事だ。
現在のハードウェア、ソフトウェアでは、素人が人に見せられるような動画を撮影、編集して作り上げるのは、非常に敷居が高いので、結局、無編集の披露宴や子供のビデオを見せられる事になり、苦笑いでごまかすという事態に陥るのである。
一方、デジカメの普及で写真ならば誰でも気の利いたスナップやら風景やらを撮れるようになってきて、コストの心配をせず実験、練習が出来るため、あっという間に上達してプロ顔負けの写真を撮るようになったりする人も居る。
将来、動画撮影と編集のコストが劇的に下がって、画期的なアイデアのソフトが登場すれば、PCとセンスさえあれば、誰でも15秒CMから短編映画までさらっと作れてしまう時代が来るのかもしれないが、結局言いたいのは、今現在、写真のほうが面白いという事である。


新規投稿を一旦保留状態に出来るPhotoXP 1.6.4

こちらで質問のあった、PENDINGモードを実装したPhotoXP 1.6.4をリリースします。
config.rbの設定を、

DEFAULT_STATUS = 'PENDING'

とするとこで、新規投稿があっても一旦保留状態に置いて、
管理モードから写真ごとに表示/削除を行うといった運用が可能になります。


PhotoXP 1.6.3リリース

PhotoXPのバージョン1.6.3をリリースしました。
今回の修正点は、

の2点です。


ExifReader 3.50が公開

アールワイシステムの吉本龍司さんのWebサイトで、Windows用のExifデータ表示フリーソフト、ExifReader 3.50が公開されました。
例によって対応機種の追加等がありますが、今回のバージョンアップの一番の目玉は、ずばりURLを直接開く機能の搭載でしょう。
例えば、画像ファイルへの直リンクがあれば、そのリンクの上で左ボタンを押してドラッグを開始。ExifReaderのウィンドウの上で離すと、自動的にリンク先の画像を開いてExif情報を表示してくれます。
とにかく、ブラウザで表示した画像のExifデータをサクサク見れて圧倒的に使いやすくなったので、古いバージョンを使ってる人はぜひバージョンアップを、まだ使って無い人はこれを機にインストールしてみましょう。


藤原紀香はFinePix S2 Proを愛用

ホームページ・ビルダーV9の発表式のニュース記事を読んでたら、愛用の「FinePix S2 Pro」を手にする藤原紀香さんの写真が!!
フジフィルムファンとしてちょっと嬉しくなったのだが、良く考えたら上原多香子の前は長い事CMやってましたね。それにしても手軽に扱えるとは言い難いS2 Proとさらにもう一台カメラを持ち歩いてるとは、かなり気合入ってますね。


続・ヒストグラム表示アプレット

その後、Webの記事を漁ったり、PhotoXPに投稿されている色々な画像の(輝度)ヒストグラムを見まくったりしたのですが、やはりRGBチャネル別のヒストグラムが無いと、いまいち画像チェックの参考にはならないという結論に至りました。
そこで、今度はRGBとグレースケール(L)を、それぞれOn/Off可能にしたアプレットを作ってみました。
DSC_8897.jpg

histogram_max.png

以前の輝度ヒストグラムでは、右側に線が立っているため飽和がある事は分かりますが、どのチャネルの色なのかまでは分かりませんでした。
しかし、今回のヒストグラムでは赤チャネルの飽和、青チャネルのつぶれを確認でき、グレースケールから露出はアンダー寄りであるといった情報を読み取れます。
しばらくPhotoXPサイトでテストしつつ、次期リリースにはこちらのアプレットを添付したいと思います。


微妙に修正したPhotoXP 1.6.1

旧バージョンから1.6.0へのアップグレードでいくつか不具合が発生するので、1.6.1をリリースします。
主な修正点は以下の通り。

GPS問題は純粋にバグ修正、Exif再解析は管理メニューから実行すると、新機能のレンズ情報やファイルサイズが過去の画像にも表示されます。
そして、最後の移行ツールは、1.6.0にして今までの投稿が消えてしまったという方向けです。
実際には今までデータベースにSDBM形式を使っていて、今回からGDBMになったため消えたように見えるだけなので、以下のURLを開くことでSDBMからGDBMへデータをコピーできます。

[掲示板のURL]?&action=sdbm2gdbm

掲示板のURLは、例えばhttp://photoxp.s56.xrea.com/photoxp/photoxp.cgiなどです。
空のGDBMに対してしかコピーが出来ないので、1.6.0で投稿が消えてしまった後に、一度でも投稿をした人は、

data/photoxp/board.gdbm

というファイルを削除してから、上記のURLを開くとバージョンアップ前の投稿データが復活します。


新機能盛りだくさんなPhotoXP 1.6

この辺をご覧の皆さんはご存知かと思いますが、ここ1、2週間でPhotoXPに色々と新機能が追加されました。
機能追加もひと段落したので、ここらでPhotoXP1.6.0としてリリースしたいと思います。
主な修正点は以下の通り。

  • 個別の返信を削除可能に。
  • IPアドレス/ドメインによるアクセス制限
  • レンズ情報を表示(Nikon、Canonのみ)
  • ヒストグラム表示
  • linkタグによるナビゲーションの追加

個別の返信ごとの削除とか、アクセス制限とか当たり前の機能(今まで無かったのです)もようやく実装されたので、試しに使ってみたいという方は、無料レンタルサーバのXREAなどでPhotoXP使ってみてはいかがでしょうか?
何か分からない点があれば、コメント欄にて質問頂ければと思います。


ヒストグラム表示アプレット

ヒストグラム表示用のJavaアプレットを作ってみました。
PhotoXP掲示板にもヒストグラム表示機能を付けたので、画像の下にあるヒストグラムというリンクをクリックしてみてください。JavaVMが入ってない人はこちら
DSC_8897.jpg

使い方は、まず画像が置いてあるサーバに
HistogramApplet.classをコピーします。
次に、APPLETタグを記述します。codebaseにHistogramApplet.classを置いたディレクトリのURLを指定し、param name=srcで画像ファイルのURLを指定します。(注: HistogramApplet.classと画像は同一のホスト、この例の場合example.comに置く必要があります)


<applet code=HistogramApplet codebase="http://example.com/yourpage/" width=256 height=128>
<param name=src value="http://example.com/yourpage/images/test.jpg" />
</applet>

あと、デザイン上周囲が黒い方が見やすいので、適当に調整してみてください。

ソースコードは以下の通り。


import java.applet.Applet;
import java.awt.*;
import java.awt.image.*;
import java.net.*;
public class HistogramApplet extends Applet {
Image img = null;
int srcWidth, srcHeight;
int[] pixels;
public String getAppletInfo(){
return "PhotoXP Histogram Applet\n" +
"http://www.daifukuya.com/photoxp/";
}
public void init() {
System.out.println(getAppletInfo());
try {
MediaTracker tracker = new MediaTracker(this);
Image srcimg;
String param = getParameter("src");
if (param.startsWith("http:")) {
srcimg = getImage(new URL(param));
} else {
srcimg = getImage(getDocumentBase(), param);
}
tracker.addImage(srcimg, 1);
tracker.waitForAll();
srcWidth = srcimg.getWidth(null);
srcHeight = srcimg.getHeight(null);
pixels = new int[srcWidth * srcHeight];
PixelGrabber pg = new PixelGrabber(srcimg, 0, 0, srcWidth, srcHeight, pixels, 0, srcWidth);
pg.grabPixels();
} catch (Exception e) {
e.printStackTrace();
}
}
public void calculate() {
Dimension d = size();
if (d.width == 0) return;
int step = d.width;
int[] histogram = new int[step];
for (int y = 0; y < srcHeight; y++) {
for (int x = 0; x > 16) & 0xff;
int g = (pixel >> 8) & 0xff;
int b = (pixel) & 0xff;
// int brightness = (int) ((r*0.299+g*0.587+b*0.114)*(step - 1)/255); // gray scale
int cmax = (r > g) ? r : g;
if (b > cmax) cmax = b;
int brightness = (int)((double)cmax*(step-1)/255.0f); // brightness
histogram[brightness]++;
}
}
int max = 0;
for (int i = 0; i  max) ? histogram[i] : max;
}
img = createImage(d.width, d.height);
Graphics g = img.getGraphics();
g.setColor(Color.black);
g.fillRect(0, 0, d.width, d.height);
g.setColor(Color.darkGray);
g.drawRect(0, 0, d.width-1, d.height-1);
for (int i = 1; i < 5; i++) {
g.drawLine(i*step/4 - 1, 0, i*step/4 - 1, d.height - 1);
}
g.setColor(Color.white);
for (int i = 0; i < step; i++) {
if (histogram[i] == 0) continue;
g.drawLine(i, d.height - 1, i, d.height - 1 -(histogram[i]*d.height)/max);
}
}
public void paint(Graphics g) {
if (img == null) {
calculate();
}
g.drawImage(img, 0, 0, null);
}
}

あと、最初はグレースケールのヒストグラムを表示していたのですが、輝度(brightness、HSBカラーモデルのB)の方がデジカメ画像のチェックには有用と思われるので、変更しました。
ほんとは、全ての種類のヒストグラムを選べるのが一番良いのですが、それはまた次の課題ということで。。。


Trash Live@四谷フォーバレー

Trash 糸賀徹
夕方からふらっと知り合いのライブに行ってきた。
Trashというバンドで、同級生がWebサイト作りを手伝ってるんで、今度サイトに載せる写真撮ってくれない?と誘われたのが縁である。
音はプロとして活動してた人もいるだけあって、さすがにうまい、カッコイイ!そして、年齢差20歳以上という珍しいバンドでもあったりする。。。
試聴はこちらから。