【Mac】プレビューで画像をコピペして保存すると白黒(グレー)になる件 🎨

便利な macOS プレビューアプリですが、

絵を描いて保存した瞬間になぜか白黒になるものがある。

このように丸を描いて保存すると、

こうなってしまいます。

上に画像をコピペで貼り付けした場合もグレーになってしまいます。

エクスポートしても同じ。

画像の形式の話だろうけど、どうしたらいいのか。

👉 プレビューからコピーした画像が白黒にな… - Apple コミュニティ hatena-bookmark

👉 saving Preview annotations color - Apple Community hatena-bookmark

 

🎨 画像形式を確認する

元画像は w.png。

プレビューの [ツール] - [インスペクター] で。

「Gray」と表示されてるのが気になります。

コマンドラインでも見てみます。


❯ file w.png
w.png: PNG image data, 300 x 300, 1-bit grayscale, non-interlaced

❯ identify w.png
w.png PNG 300x300 300x300+0+0 8-bit Grayscale Gray 2c 346B 0.000u 0:00.024

❯ pngcheck w.png
OK: w.png (300x300, 1-bit grayscale, non-interlaced, 97.0%).

「grayscale (グレースケール)」とどれも表示されています。

👉 pngcheck - verifies the integrity of PNG, JNG and MNG files

 

🎨 ImageMagick でPNG形式を変換する

以下で変換できるようです。

You need to supply PNG24, PNG8 or PNG32 prefix if planning to use this canvas to layer colour images over. Without it, it creates a Grey colour space. I used 32, as I need "varying degrees of transparency for each pixel"

このキャンバスを使用してカラー画像を重ねる場合は、PNG24、PNG8、または PNG32 プレフィックスを指定する必要があります。これがないとグレーの色空間が作成されます。 私の場合は、各ピクセルの透明度を変える必要があるので 32 を使用しました。


convert w.png png32:w.png

👉 Create blank image in Imagemagick - Stack Overflow hatena-bookmark

上記コマンドを実行して変換後、確認してみます。


❯ file w.png
w.png: PNG image data, 300 x 300, 8-bit/color RGBA, non-interlaced

❯ identify w.png
w.png PNG 300x300 300x300+0+0 8-bit sRGB 1294B 0.000u 0:00.000

❯ pngcheck w.png
OK: w.png (300x300, 32-bit RGB+alpha, non-interlaced, 99.6%).

「graayscale」という文字は消えています。

再度、赤い丸を描いて保存するといけました!

 

🎨 まとめ

最初に開くファイルの形式が保存時に影響する。

ちなみに、ImageMagick が対応してるのは以下。


❯ identify -list format | grep PNG
      JNG* PNG       rw-   JPEG Network Graphics
      MNG* PNG       rw+   Multiple-image Network Graphics (libpng 1.6.39)
      PNG* PNG       rw-   Portable Network Graphics (libpng 1.6.39)
             See http://www.libpng.org/ for details about the PNG format.
    PNG00* PNG       rw-   PNG inheriting bit-depth, color-type from original, if possible
    PNG24* PNG       rw-   opaque or binary transparent 24-bit RGB
    PNG32* PNG       rw-   opaque or transparent 32-bit RGBA
    PNG48* PNG       rw-   opaque or binary transparent 48-bit RGB
    PNG64* PNG       rw-   opaque or transparent 64-bit RGBA
     PNG8* PNG       rw-   8-bit indexed with optional binary transparency

しかし、プレビューアプリだけで完結できないものか。

以下の記事がわかりやすく解説されていました。

👉 ImageMagick で PNG の形式を変換 - awm-Tech hatena-bookmark



【マイナンバー】スマホ用電子証明書がややこしいネーミングで混乱する

データ削除の件も気になっていて、

使ってみようとして少し混乱したので。

👉 スマホのマイナカード機能を止める方法 デジタル庁が案内 端末の初期化ではデータは“消えない” - ITmedia NEWS hatena-bookmark

 

📱 スマホ用電子証明書の有効性確認を行う

以下のサイトを見ながら、まずは確認を行ってみようと。

👉 電子証明書の情報確認 / スマホ用電子証明書の有効性確認を行う | 使い方 hatena-bookmark

練習と思い、上の図を mermaid 記法シーケンス図で書いてみました。


👉 スマホ用電子証明書の有効性確認.md hatena-bookmark

 

📱 「電子証明書」の種類

ちょっと、言葉の意味が分からなくなりました。

以下、上記公式ページから抜粋した「電子証明書」たち。


- スマホ用電子証明書
- あなたの電子証明書
- 利用者証明用電子証明書
- 署名用電子証明書
- 発行元の電子証明書
- スマホ用署名用電子証明書
- スマホ用利用者証明用電子証明書
- あなたのスマホ用電子証明書

....。

直感的に分かりません。

うちのおかんが使えるわけねえだろバカが。

考えられるパターンをある程度書き出してみます。


電子証明書
署名用電子証明書
利用者証明用電子証明書
スマホ用電子証明書
スマホ用署名用電子証明書
スマホ用利用者証明用電子証明書
あなたの電子証明書
あなたの署名用電子証明書
あなたの利用者証明用電子証明書
あなたのスマホ用電子証明書
あなたのスマホ用署名用電子証明書
あなたのスマホ用利用者証明用電子証明書
発行元の電子証明書
発行元の署名用電子証明書
発行元の利用者証明用電子証明書
発行元のスマホ用電子証明書
発行元のスマホ用署名用電子証明書
発行元のスマホ用利用者証明用電子証明書
...

こんなにありました?

 

📱 「あなたの」「発行元の」?

私が混乱したのはこの画面。

「あなたのスマホ用電子証明書」か「発行元のスマホ用電子証明書」どちらのスマホ用電子証明書を

???

「あなたの」

「発行元の」

この2つの言葉が私をさらに混乱させています。

マイナンバーカードデータは、インターネットを利用して、データを照会してから処理を進めますので、「スマホアプリ」でいうところの


「あなたの」→「スマホアプリ内に保存している」

「発行元の」→「クラウド上に登録されている」

と解釈するとなんとなく理解することができました。

 

📱 まとめ

日本語を解読するための表を作っておきます。

そもそも、

「利用者証明」と「署名」と「電子証明書」。

このネーミングが混乱の元。

英語圏やプログラミングでは説明しづらくない?

直感的に使えるネーミングは大事。



【Mac】マウスクリックだけでターミナルを開いて好きなコマンドを実行するショートカット

あらかじめ登録しておいたよく使うコマンド群を選択クリックして実行します。

キーボードなしで使えます。

 

💻 AppleScript


Mac 上のターミナルアプリ「iTerm」を起動して、

  ↓

キーボードから文字を入力して実行する。

という操作をスクリプトで実装しています。


on run argv
  set cmd to (item 1 of argv)
  tell application "iTerm"
    create window with default profile
    delay 2
    tell current session of current window
      write text cmd
    end tell
  end tell
end run

どのアプリでも起動したあと、どんな文字でも入力できるので、使い回しができるスクリプトだと思います。

 

💻 ショートカット

上のスクリプトをショートカット内に入れます。

よく使う「引数などのついた」コマンドたちはリスト化して選択できるようにしておきます。

【Mac】マウスクリックだけでターミナルを開いて好きなコマンドを実行するショートカット

Apple ショートカットは簡単なダイアログや選択リストがあらかじめ用意されているので便利ですね。

 

💻 まとめ

しかし、AppleScript ってドキュメントが少ないです。

tell - end tell は入れ子で書いた方が分かりやすいです。