« 要望や不具合報告を元に Plugin 3種をアップデートしました | メイン | Sleipnir スキン acrylic [アクリル] β版 0.0.2 リリース ! »

UserAction Extension でオレオレスクリプトのススメ (3) このエントリーをはてなブックマークに追加

Hatena Bookmarker がリリースされ、ブックマーク数が気になって仕事が手につきません。
謎の人です。こんにちわ。べ、べつにブクマおねだりしてるわけじゃないんだからね!

いろんな人の撮影した写真を見るのが好きです。日々、あちこちの写真ブログを徘徊しています。その時に自分で使っているオレオレスクリプトを、動作サンプルとして公開。

以下、導入手順。


  1. ActivePerl をインストール

  2. Perl モジュール「Image::ExifTool」「LWP::UserAgent」をインストール


    ppm install Image-ExifTool
    ppm install LWP-UserAgent

  3. resources/languages/default/english/ScriptEngine.ini
    に一行追記


    pl=PerlScript

  4. plugins/scripts に、nazo_showExif.pl を設置

  5. メニューエディタで「ブラウザ 画像」にわりあてて、右クリックで利用

マウスカーソル下の画像の情報 (Exif) を取得するサンプルです。
こういうのは Perl で作ったらわりと簡単にできるよ! というお話でした。

あわせてどうぞ モアイー

写真のステキさと機材のステキさは比例しません。
写真に限らず、本質を見極め、ステキな何かを生み出せるよう、日々精進したいものです。

Perl ネタもあと 1 回。次回は、UserAction Extension 関連の話題のしめくくりとして、Sleipnir.API をちょっとだけ気軽に使える方法を。。。考えておきます。

ありがとうございました。

【追記】
nazo_showExif.pl に間違いがあったので修正しました。下記 1 行追加


use Win32::OLE;


【追記:2007-12-07】

nazo_showExif.pl


use strict;
use warnings;

use Win32::OLE;
use Image::ExifTool;
use LWP::UserAgent;

my $MAX_SIZE = 1024 * 128; # 128KB
my @EXIF_KEY = qw(Make Model DateTimeOriginal ShutterSpeed Aperture FocalLength LensType ISO ExposureCompensation ImageSize);

# このあたりもちゃんとエラー処理した方がいいですね
my $s = new Win32::OLE('Sleipnir.API');
my $doc_id = $s->GetDocumentID($s->ActiveIndex);
my $img = $s->GetWindowObject($doc_id)->event->srcElement;

_alert('cannot found "img" tag.')
unless ( defined $img );

_alert('cannot found attribute "src".')
unless ( defined $img->src and $img->src =‾ m|^https?://| );

my $content = _get_content($img->src);
_alert('cannot get image.') if $content eq '';

my $info = _get_image_info($content);
_alert('cannot get image info.') if scalar(keys %$info) == 0;

_show_image_info($info);

undef $s;
undef $img;

exit;

sub _alert {
$s->MessageBox(@_);
exit;
}

sub _get_content {
my $url = shift;

my $content = '';
my $ua = LWP::UserAgent->new();
$ua->max_size($MAX_SIZE); # 128KB
my $res = $ua->get($url);
if ( $res->is_success ) {
$content = $res->content;
}

return $content;
}

sub _get_image_info {
my $content = shift;

my $info = {};
my $ret = {};

my $image = Image::ExifTool->new();
if ( $image->ExtractInfo(¥$content) ) {
$info = $image->GetInfo();
for my $key (@EXIF_KEY) {
if ( $info->{$key} ) {
(my $value = $info->{$key}) =‾ s|¥s+$||;
$ret->{$key} = $value;
}
}
}

return $ret;
}

# lightbox.js みたいにするとかっこいい
sub _show_image_info {
my $info = shift;

my @tags = ();
# for my $key (keys %$info) {
for my $key (@EXIF_KEY) {
push @tags, $key.' : '.$info->{$key} if $info->{$key};
}
alert(join "¥n", @tags);
}
__END__

トラックバック

このエントリーのトラックバックURL:
http://www.fenrir.co.jp/blog/mt-tb.cgi/124

コメント (1)

Fuji:

SnapCrab で「ウェブページの指定範囲をキャプチャ」というのがありますが、あれは矩形領域として範囲選択しなければなりません。この方式を応用すれば矩形範囲選択ではなく、マウスカーソル下の画像をクリック選択したり、Flash画像のコンポーネント選択が可能になったりもするのですか?
可能であれば是非とも対応お願いします。

コメントを投稿

このコメント欄でのご質問、ご要望には、開発チームから回答できない場合があります。
ご質問、ご要望は「User Community」内の該当するフォーラム、または「Sleipnir | サポート」までお越しください。






あわせて読みたい

Sleipnir ユーザーリング

Sleipnir People
Sleipnir People

はてなブックマーク

フィードメーター - Developer's Blog
Feed 一覧 | お問い合わせ | プライバシーポリシー | サイトマップ
Copyright © 2006-2010 Fenrir Inc. All Rights Reserved