みかづきブログ・カスタム

基本的にはちょちょいのほいです。

TypeScriptでCanvasに紙吹雪を舞い散らせる 🎉

5年前ぐらい前につくった紙吹雪をJavaScriptからTypeScriptに移植してみました。 Canvasに紙吹雪をレンダリングする基本方針はそのままに、ちょっとだけ挙動を変更しています。 具体的には、TypeScriptバージョンは紙吹雪が舞い散り終わった後、ループさせず…

iPhoneにInstagramのアプリがインストールされていればアプリに、なければウェブブラウザ版に遷移するリンクをつくる 📱

iOS

iOSのCustom URL Schemeを使い、 Instagramのアプリがインストールされている → アプリに遷移 Instagramのアプリがインストールされていない → ブラウザでインスタを開く という挙動を実装してみました。developer.apple.comInstagramのCustom URL Schemeは…

OpenCV.jsを使って画像から特定の範囲の色が使われている部分だけを抽出し、その割合を算出する 🎨

inRange関数 を使えば、特定の範囲の色のピクセルのみを抽出することができます。docs.opencv.org特定の範囲の色の指定方法ですが、今回はHSVを使って指定しました。ja.wikipedia.orgRGBからHSVに変換する際の選択肢として、COLOR_RGB2HSV と COLOR_RGB2HSV_…

OpenCV.jsを使って2枚の画像の差分を表示する 🖼

blog.kimizuka.org前回の記事がもりもりだったのですが、今回はシンプルにabsdiff関数だけを使ってみます。docs.opencv.org cv.absdiff(matA, matB, 出力先のmat); で、差分が取れるのでものすごく手軽に使えます。早速、下記2枚(1.png、2.png)の画像の差…

OpenCV.jsを使ってカメラで撮影した映像のフレーム差分を算出し、動いているもののみを表示する 📷

まだ、完璧ではないのですが、カメラの映像の中から動いているものだけを表示するスクリプトを書きました。全部で9個canvasがありますが、役割は下記の通りです。9個の小さなCanvasを左上からA、B、C、つまり、 A B C D E F G H Iと呼んだとき、A. 現在(カ…

OpenCV.jsを使ってカメラで撮影した映像を二極化する 📷

blog.kimizuka.org前回は、OpenCV.jsを使ってカメラで撮影した映像をモノクロにしました。 今回は、前回作成したモノクロ画像を更に二極化してみます。 ソースコード JavaScript const Module = { onRuntimeInitialized() { const medias = { audio: false, …

OpenCV.jsを使ってカメラで撮影した映像をモノクロにする 📷

opencv.orgカメラで撮影した映像をモノクロにするだけであれば、ピクセルデータを編集したり、CanvasRenderingContext2D.filterを使ったりすれば良いのですが、OpenCV.jsを試してみたかったので、今回はOpenCV.jsで実装します。blog.kimizuka.org blog.kimiz…

transform-matrixを使って、クリックした箇所を基準に拡大縮小する四角形をつくる 🔍

developer.mozilla.orgtransform-matrixを使って、クリックした箇所を基準に2倍に拡大する四角形をつくりました。もう一度クリックすると元の大きさに戻ります。 DEMO ソースコード JavaScript const rect = document.getElementById('rect'); let scale = 1…

liタグのマーカー(黒丸や数字)はフォントファミリーに依存することに気づく 😱

CSS

いままで意識したことがなかったですが、フォントファミリーを変更すると、liタグのマーカー(左についている黒丸や数字など)サイズが結構変わることがあります。 DEMO PC版のGoogle Chrome「Noto Sans JP」と「san-serif」を並べていますが、黒丸は「Noto…

wheelイベントでトラックパッドのピンチイベントを取得する 🖱

Macのトラックパッドのピンチイン・ピンチアウトをJavaScriptで取得したい場合、wheelイベントを使います。 ピンチイン・ ピンチアウト、ホイールを区別しない場合 DEMO ピンチイン・ピンチアウト、マウスホイールで値が更新されます ソースコード(抜粋) …

Googleカレンダーの予定名を隠した状態のスクリーンショットを撮影してダウンロードするブックマークレットをGoogle Chromeの拡張機能に移植する 📅

追記 公開しました!chrome.google.com 以前作成した、こちらのブックマークレット。blog.kimizuka.orgいまでも愛用しています。 先日、Goolge Chromeの拡張機能の作り方を調べたところ、非常に簡単だったので移植してみることにしました。さらには勉強のた…

Goolge Chromeの拡張機能の習作をつくる 💻

ひさしぶりに、Goolge Chromeの拡張機能をつくることになったので、メモを残しておきます。 どれぐらいひさしぶりなのか調べてみると、僕が最後に拡張機能をつくったのが、2015年12月だったので、かれこれ7年ぶりでした。 その間に、manifest_versionが2から…

WKWebViewを設置しただけのiOSアプリをつくる 📱

iOS

普段はウェブアプリを作成していますが、時々ウェブからはアクセスできない機能を使いたいことがでてきます。 例えば、「プッシュ通知」「Bluetooth」「画面をランドスケープで固定」などです。そんなとき、Swiftで指定したウェブページを表示するだけのアプ…

Xcodeから実機に転送しようとした際に「Developer Mode disabled」となるのを解決する 📱

iOS

ひさしぶりに、XcodeでiOSアプリをつくり、実機に転送しようと思ったのですが、「Developer Mode disabled」となってしまいました。※ 「webview」はアプリ名、「」は端末名です アラートの表示された通り、「設定」>「プライバシーとセキュリティ」>「ディベ…

clip-pathでDOMにマスクを掛けつつborderのような枠線を描く ✏️

CSS

以前、clip-pathでDOMにマスクを掛けつつdrop-shadowで影を落としたことがあったのですが、clip-pathとborderを併用できないかなと思い色々試してみました。blog.kimizuka.org結論としてはborderとの併用は難しく、同じclip-pathを設定した要素をサイズ違い…