✖
あー失敗したなぁっていう言動が……
あとぼくはリアクション過剰症なので反応の 70-80% ぐらいが正しい反応だと思われます。事前にぼくのほうでそれを処理してから外にだすほうが実装としてスマートなのですがいかんせんうまくいかないのです。
あー失敗したなぁっていう言動が……
あとぼくはリアクション過剰症なので反応の 70-80% ぐらいが正しい反応だと思われます。事前にぼくのほうでそれを処理してから外にだすほうが実装としてスマートなのですがいかんせんうまくいかないのです。
raw 現像のプロセスをやってみたくてうだうだやってるけれど、いまだにファイルパースから抜けられない。ちなみに CR2 (Camera Raw 2 だか Canon Raw 2 だか)
CR2 自体は TIFF で、サムネイル (小と中?) と raw データがまとまって入っている (あとなんか謎の IFD が一個ある) のだけれど、raw データはさらに JPEG でラップされてハフハフされてる。ちなみに TIFF の構造は使っているけど TIFF としては Invalid (raw の IFD は width や height を持ってなかったり、あと前記の謎の IFD があったり) なので扱いにくい。
思うに、Adobe DNG に変換してからやったほうがいいとは思うんだけど、結局 Adobe DNG も TIFF+JPEG なんだ?みたいなのをソース読んだりして感じたので今のままやってたりたり。というか DNG SDK をダウンロードしようと思ったらできなかったのでそのうちやるみたいな感じで。DNG に対応したって、結局ベイヤーたんじゃないならびのやつは独自に書いてあげないといけないんだろうし (そうじゃないと raw じゃない) なんかあんま意味あんのかなと思ったり思わなかったり。そこらへんってどうなってるんだろう。
どうでもいいといえばどうでもいいけど、dcraw は goto とかグローバル変数とか使いまくりでしかも、バアタリティ全開のメーカー名が入った変数名とか省略済み変数名とかありまくりなので読みにくさがやばくてっていうかもうソースだけで読むとか無理というか、途中の機器判定のロジックとかソース読んだだけじゃマジックナンバーが多すぎて意味不明なので結局実際にファイルを読み込ませて gdb を追ったっていうかなんていうか……
眠いので、寝よう
http://lab.lowreal.net/trac/browser/c/tiff.rb (書いた TIFF パーサ。ろくにテストしてない。先にテスト書くべきだった。けど、ちょうどいいデータがなくてめんどくさかった)
実装に秋田ので DNG を適当に読んでみる。秋田っていうか JPEG のパースが思ったより (TIFF より) めんどい……
仕様は書き込み側 (カメラメーカ) 向けに書いてあるっぽい感じ (Adobe が書いてるんだからそりゃそうだろうけど)
DNG のポイント
あといろいろあるけどあきた
カラーフィルターパターンから現像プロセスを算出すればメーカーごとに全部実装するとかはしなくていいようになってるのか。カラーフィルターの値の設定があればいい、みたいなのかな。
ちけっとかった。 loppi の前で10分ぐらい
http://d.hatena.ne.jp/nitoyon/20070220/p1
ほー。名前空間の問題っぽいので、クラス中のアクセス方法を変えれば大丈夫なようだ?
package {
import flash.display.*;
import flash.text.*;
import flash.events.Event;
import flash.utils.*;
public class HelloWorld extends Sprite {
public function HelloWorld() {
var sample:Sample = new Sample();
log(sample.sample); //=> "fuge"
// sample.sample = "hoge"; //=> Error: プロパティは読み取り専用です。 (public を通してアクセスしているが、setter が定義されていないため)
// sample.private::sample = "hoge"; //=> Error: アクセスできないプロパティ sample へのアクセスを、静的型 HelloWorld.as$0:Sample の参照を使用して試行し ました。(private が特別なため)
}
}
}
class Sample {
public function Sample () {
private::sample = "hoge";
log(public::sample); //=> "hoge"
private::sample = "fuge";
log(public::sample); //=> "fuge"
}
private var _sample:String;
public function get sample():String {
return _sample;
}
private function set sample(v:String):void {
_sample = v;
}
}内部からは接頭辞つけて明示してあげるといける。これでいいのかはわからないけど
あとついでに、
package {
import flash.display.*;
import flash.text.*;
import flash.events.Event;
import flash.utils.*;
public class HelloWorld extends Sprite {
namespace unco = "http://lowreal.net/ns/sample";
public function HelloWorld() {
var sample:Sample = new Sample();
log(sample.sample);
sample.unco::sample = "hoge"; // もちろんエラーはでない
log(sample.sample); //=> "hoge"
}
}
}
class Sample {
public function Sample () {
private::sample = "hoge";
log(public::sample);
private::sample = "fuge";
log(public::sample);
}
namespace hoge = "http://lowreal.net/ns/sample";
private var _sample:String;
public function get sample():String {
return _sample;
}
private function set sample(v:String):void {
_sample = v;
}
hoge function set sample(v:String):void {
_sample = v;
}
}とかキモいことができるみたいだ。