あんまり使ってないので手放そうかと思ったが、久しぶりに使ってみた。思ったより面白くてわくわくしたので手放すのはやめた。

  1. トップ
  2. photo
  3. 魚眼レンズ

Bluetooth Explorer とかで見ることができる disconnect 時などのエラーコード

Bluetooth 4.2 の Spec PDF を落として、Vol 2 → Part D と辿ると一覧がある。

よくある系

  • 0x08 Connection Timeout
  • 0x16 Connection Terminated by Local Host
  • 0x22 LMP (Link Manager Protocol) Response Timeout / LL (Logical Link) Response Timeout
  1. トップ
  2. tech
  3. BLE のエラーコード一覧

SONY の圧縮RAWは評判がよくない。というのも記録ビット数が最大で11bit (12bitもしくは14bitの生データを記録時に対数カーブでダイナミックレンジを圧縮する) であることと、局所的なダイナミックレンジが最悪7bitな仕様となっているから。特に後者に起因して、狭い領域 (具体的には横方向16pixelごと) でのダイナミックレンジが極めて広い場合、中間階調が復元できずノイジーになることがある。

星空や夜景のように真っ黒な中に輝点が突然現れるような高コントラストなシーンでこの問題が顕在化することがある。逆に局所的なダイナミックレンジがそれほど高くないシーンでは問題にならない。

以下の記事で具体的なケースがわかりやすい。

α7R II の場合、圧縮RAWだと43MBぐらいだが、非圧縮RAWだと86MBぐらいになる。非圧縮RAW+JPEGだと合計で1枚撮るだけで100MBぐらいになることが多い。書きこみには余計に時間がかかり、ディスク容量を圧迫する。

個人的にはいまのところ圧縮で問題になってない。というかだいたいのケースでは問題にならないと思うし (SONY 的にもそう判断されたからこういう実装なのだろう)、ファイルサイズ半分にできるのは「割のあう」取引だと思う。ただシーンによっておおきな問題になるという意味ではローパスフィルターレスと同様の問題といえる。とりあえずローパスフィルタと違って選択可能なのが救いか。

個人的には以下のようにする

  • 子どもの写真とかは圧縮RAW
    • あんまり現像で無理に持ち上げたりしないので
  • 独りでぼーっと撮るときは非圧縮RAW
    • あんまり枚数を撮るわけじゃないと、現像時にかなりいじったりするので

サイトのCSS・JSのちょっとした変更。1ヶ月前ぐらいから写真まわりにちょいちょい変更をいれてる。

  • 写真の高さを 100vh に制限するようにした
  • ある程度以上のスクリーンサイズのときは16MPをロードするが、時間がかかるため、あらかじめ同等の大きさの灰色の画像を表示するようにした
  • ロード中にロード中とわかるようにアニメーションをつけた (Spinner)

アスペクト比を維持した画像のリサイズがむずかしい

このサイトの画像 (img 要素) は以下のようになっている

  • max-width max-height を指定
  • width: auto; height: auto を指定
  • 十分に大きなサイズの画像を指定

これにより、max-width/max-height を超えない限り最大の大きさで、アスペクト比を保って表示することができる。しかし問題点がある。

問題点:ロード時にレイアウトが確定しない

img 要素にはロード先画像の width 及び height を属性値で指定してあるのだが、CSSで auto を指定しているため、実際に画像のサイズが得られるまで、レイアウトが確定しない。つまり画像ロードのタイミングで不定期にリフローが起こり、ページ全体の高さが変わる。

JS では実行タイミングがどうしても遅くなるので、できればCSSで対応したいが、うまい方法がない。

せっかくwidth/height 属性値でサイズを指定していて、アスペクト比がわかっていて、理論上は幅と高さを確定することができるはずなのに、これが現状ではできそうにない。

現行の対策

いい方法が思いつかなかったため、JSで動的に対処した。img 要素の width/height 属性をもとに canvas で画像を生成して、まずはこれを表示する。

これによって本来の画像を読みこむ前に、HTMLの情報だけでレイアウトを確定させることができるため、画像がロードされるたびにページの高さが変わるということはなくなる。

しかし JS でやっているため、高さが未確定の状態で1度レンダリングされてしまう。

  1. トップ
  2. tech
  3. サイトの写真の表示方法の変更

200mm で撮ったやつを1/4ぐらいにトリミング (400mm 相当?)。月を撮るときだけ 1500mm ぐらいのレンズがほしくなる

  1. トップ
  2. photo