Material Design Lite のテキストフィールドと Vue.js の相性があんまりよくない
Material Design Lite のテキストフィールドの input 要素を Vue.js で扱うとき、普通に v-model で two way binding すると、ラベル位置が更新されなくて文字が重なってしまったりする。つまりこれは Vue.js側の更新処理がMDL側に適切に伝わっていないために起こる。
MDLのソースを軽く読んだ解決として、mdl-js-textfield クラスがついている親要素に v-mdl 属性を追加し、以下のようにカスタムディレクティブを定義すると解決する。あんまり美しくないがしかたない。
静的な要素だけなら upgradeElementは必須ではないが、動的になると必須になるためついでにやっている。
Vue.directive('mdl', {
bind: function (el) {
componentHandler.upgradeElement(el);
},
update: function (el, binding, vnode) {
const textfield = el.MaterialTextfield;
if (textfield) {
Vue.nextTick(function () {
textfield.checkDisabled();
textfield.checkValidity();
textfield.checkDirty();
textfield.checkFocus();
});
}
}
});
関連エントリー
- 一瞬で開発開始するための Vue3 無トランスパイル環境 いきなりトランスパイルの環境作って常時ビルドツールを動かして開発するのがいまいち性にあわず、いまだにそういうことをしないようにしてる。小さい...
- ES2015 の iterable/iterator/generator による無限 FizzBuzz (オブジェクト指向編) ES2015 の iterable/iterator/generator による無限 FizzBuzz | tech - 氾濫原 に続いて、...
- ES2015 の iterable/iterator/generator による無限 FizzBuzz ES2015 の iterable protocol / iterator protocol だとそこそこ自然に無限リストを作れるわけなので...
- Angular JS で View を伴う Service 的なことをしたいとき、あるいは Directive に Controller をつけたいとき。 クソコード を書いたはいいが、釈然としなかった。 "View independent business logic: Services" と...
- Spring MVC で @Async と @RequestScope を共存させるには? @Async と @RequestScope を同時につかうとどうなるか @RequestScope、これは @Scope(value = ...
✖
✖
✖
✖
Google Photos の ICC カラープロファイルの扱いの続き
Google Photos の ICC カラープロファイルの扱い | tech - 氾濫原 の続きです。前回のまとめとしては
- Google Photos は基本的に sRGB に変換
- s0 (オリジナル同等サイズ) のみ元々のカラープロファイルが保持される
- 500px 未満の場合はカラープロファイルが削除される
でした。
ただしある程度時間が経つまではオリジナルのプロファイルの画像が配信されることがあることがわかりました。
検証の試行錯誤
今日追試してみたところ、前回わかったルールよりもうすこし複雑なようだぞという挙動にみえ、ついでにいうと法則性がわかりませんでした。
あらたなファイルをアップロードして検証
今日あらたにアップロードしたファイルで検証してみました。以下のようにして s0 の部分をかえています。
curl https://lh3.googleusercontent.com/-4gapCD_T4ag/WOT-_iAPFkI/AAAAAAAAu-I/KXcMpxSoEcMurTrZ3umFh8nfOfOV88knQCE0/s0/IMG_7343-16MP-2.jpg | exiftool -
- s320 - なし
- s480 - なし
- s499 - なし
- s500 - sRGB IEC61966-2-1 black scaled
- s1024 - sRGB IEC61966-2-1 black scaled
- s1280 - sRGB IEC61966-2-1 black scaled
- s1919 - sRGB IEC61966-2-1 black scaled
- s1920 - オリジナルのプロファイル (ただし EXIFやXMP などは削除)
- s1921 - sRGB IEC61966-2-1 black scaled
- s2047 - sRGB IEC61966-2-1 black scaled
- s2048 - オリジナルのプロファイル (ただし EXIFやXMP などは削除)
- s2049 - sRGB IEC61966-2-1 black scaled
- s0 - オリジナルのプロファイル (ただし EXIFやXMP などは削除)
前回のファイルを再度検証
一方、前回検証したときに使ったファイルを再度検証してみましたが、こちらは前回と変わりませんでした。
curl https://lh3.googleusercontent.com/-BDMfJtqE7Mw/WIlEQ29H7II/AAAAAAAAnw0/2ZUwqimJUcQUbiLomaBrvwcrAebJFSjWQCE0/s0/IMG_9415-16MP-AdobeRGB.jpg | exiftool - curl https://lh3.googleusercontent.com/-pEtCDwM8HhQ/WIlEQ5CSwLI/AAAAAAAAnw8/rAyZIkuFVzEk3x68vRLPAkkevHUxEicJQCE0/s2048/IMG_9415-16MP-ProPhotoRGB.jpg | exiftool -
- s320 - なし
- s480 - なし
- s499 - なし
- s500 - sRGB IEC61966-2-1 black scaled
- s1024 - sRGB IEC61966-2-1 black scaled
- s1280 - sRGB IEC61966-2-1 black scaled
- s1919 - sRGB IEC61966-2-1 black scaled
- s1920 - sRGB IEC61966-2-1 black scaled
- s1921 - sRGB IEC61966-2-1 black scaled
- s2047 - sRGB IEC61966-2-1 black scaled
- s2048 - sRGB IEC61966-2-1 black scaled
- s2049 - sRGB IEC61966-2-1 black scaled
- s0 - オリジナルのプロファイル (ただし EXIFやXMP などは削除)
よくわからないので、前回と同じファイルをアップロードしなおしてみましたが変わらず。
同じ内容ですこし違うファイルを再アップロード
しかし s0 をダウンロードしたものを再度アップロードすると今度は以下のような結果に…
curl https://lh3.googleusercontent.com/-ykbJTkOQRME/WOUC9VszXHI/AAAAAAAAu-g/E5q6Ds_DJu06zrYiOK8J2FKNbmMjlU34ACE0/s2049/IMG_9415-16MP-AdobeRGB.jpg | exiftool -
- s320 - なし
- s480 - なし
- s499 - なし
- s500 - オリジナルのプロファイル (ただし EXIFやXMP などは削除)
- s1024 - sRGB IEC61966-2-1 black scaled
- s1280 - sRGB IEC61966-2-1 black scaled
- s1919 - オリジナルのプロファイル (ただし EXIFやXMP などは削除)
- s1920 - オリジナルのプロファイル (ただし EXIFやXMP などは削除)
- s1921 - オリジナルのプロファイル (ただし EXIFやXMP などは削除)
- s2047 - オリジナルのプロファイル (ただし EXIFやXMP などは削除)
- s2048 - オリジナルのプロファイル (ただし EXIFやXMP などは削除)
- s2049 - オリジナルのプロファイル (ただし EXIFやXMP などは削除)
- s0 - オリジナルのプロファイル (ただし EXIFやXMP などは削除)
なぜか s500 でオリジナルが適用されていたり、だいたいオリジナルが適用されるかと思いきや s1024 や s1280 では sRGB になったりと意味不明です。
落ち着く
あきらかに挙動に疑問があるので、一旦冷静になります。さすがに Google といえどファイル内容を見てプロファイルを埋め込むかどうかを判定しているわけではないだろうし、なぜこんなことに……
と少し時間が経過してから再度検証してみたところ、結局 s0 以外は全て sRGB になりました。つまり
- 動的にリサイズする場合はプロファイルが保持される (s0 はリサイズしないのでそのまま)
- リサイズ結果は sRGB となり静的にキャッシュされる
が真相のようでした。動的にリサイズする場合はプロファイル変換までやるとオーバーヘッドがあるためプロファイルを埋め込むみたいな戦略なんでしょうかね?
関連エントリー
- Google Photos の ICC カラープロファイルの扱い Google Photos は配信画像は基本的にすべて sRGB でなっています。 そこで ICC のテスト用 jpeg ファイル や、手元...
- 広色域時代の画像の正しい扱いかた モバイル端末も iPhone7 など DCI-P3 サポートが増えてきて、CSS での広色域サポートもはじまりつつあるなかで、サーバサイドな...
- CSS の色空間は sRGB のはずだけど… Chrome, Firefox, Safari で調べたところ、 Chrome: カラーマネジメントされない ( sRGB は適用されない)...
- Picasa にあげるときのカラープロファイル Picasa での色化け 先にまとめ sRGB で出力すること sRGB もいろいろあるので、できれば sRGB IEC61966-2.1 ...
- cwebp はメタデータを削除する WebP に変換するデモコマンドである cwebp はデフォルトでメタデータを全て削除する。ICC プロファイルすら消しさるのでかなりひどい...
✖
waveshare 7inch LCD (USB Touch センサー付き) を買ってみた。
BeagleBone Black 用に。$54.88
BeagleBone Black では専用イメージを使えみたいなことが書いてあって不安だったけど、繋ぐだけで表示できたしタッチも動いてくれた。しかしタッチは感度か精度がいまいち。細かい操作のために抵抗皮膜式が良かったんだけど、静電容量式のしかなかった。タッチペンが反応しなくてこまってる。
関連エントリー
- Picasa にあげるときのカラープロファイル Picasa での色化け 先にまとめ sRGB で出力すること sRGB もいろいろあるので、できれば sRGB IEC61966-2.1 ...
- Original Prusa i3 MK2S でペンプロッタ 3Dプリンタとペンプロッタはほとんど似たようなものなので、アタッチメントをつけて簡単にペンプロッタ化してみた。アタッチメントはこんな感じ。4...
- BeagleBone Black の LED をはんだゴテなしで延長する BBB には USER LED という青色 LED が基板上4つあって、デフォルトではフラッシュアクセス時に点灯するような設定になっています...
- Raspberry Pi / BeagleBoard Black / Intel Galileo / Arduino の違いのメモ いろいろでてきてる。 Raspberry Pi Type A と Type B があり、Type A はイーサネットポートと組込みUSBハブ...
- 激安カーボンデジタルノギス 800円弱ぐらいで買えてしまうカーボンノギス。スペック上は器差±0.2mm、表示上は0.1mm。安いアナログノギスの変わりには十分だろう。 ...






















