Edited at

Macでスクリーンショットを撮ろうとすると「タイプ文字列を作成できません。」とアラートが出て保存できない

More than 1 year has passed since last update.

どうも、さ犬🐶です。

実は、Macで開発環境を作った後にスクリーンショットを撮ると以下のようなアラートが出てスクリーンショットが撮れないという事態が起こるようになって困っていたのですが、解決方法がわかったので記事にしました!

ググってもこの症状自体まれらしく、ちゃんとまとまってる記事がなくてしばらく諦めてGyazo使ってたけど、やっぱりローカルの時はmacのスクショを使いたかった...


再現手順


  1. 「Command + Shift + 3」や「Command + Shift + 4」を押す

  2. 以下のようなアラートが出てスクリーンショットが保存されない

アラート


前提

よく


「システム環境設定>キーボード>ショートカット>スクリーンショット」にあるチェックボックスにチェックがついていないのでは?


という回答があるけど、それで解決できたら困ってないし、そもそも事象と解決方法に何も関連性がないのでそれはないですね。

それならそもそもスクリーンショットすら起動しないはずなので、こんなアラートはでないはずです。

そこで、このアラートの文章を読むと、どうやら以下のようなことが起こっていると予測できます。


原因

画像データを特定の拡張子で保存したいんだけど、その拡張子が画像のものではないから保存ができない

つまり、スクリーンショットの保存形式が png, jpg, pdf などのような画像を表示できるものではないということ。

Macではスクリーンショットの保存形式はデフォルトで、pngになっているので普通ならこんなことは起きないです。しかし起きてしまった。。。

調べると、macのスクリーンショットの設定が書かれたファイルがあってそれを変更すると治る感じだったので、まずは設定ファイルを色々書き換えるコマンドを紹介します。


スクリーンショットの設定方法

Macのスクリーンショットの設定を行うコマンドが用意されているので紹介します。参考


設定を確認

defaults read com.apple.screencapture

json形式で設定を確認できます。


設定をデフォルトに戻す

以下のコマンドでスクリーンショットの全設定をデフォルトに戻せます。

defaults delete com.apple.screencapture

ただし、特定の属性のみをデフォルトに戻すには以下のようにします。

defaults delete com.apple.screencapture {属性の識別子}

ex) defaults delete com.apple.screencapture type

属性
識別子

保存形式
type

保存場所
location

ウィンドウの影
disable-shadow


設定の反映

killall SystemUIServer


保存形式を変更

defaults write com.apple.screencapture type {保存形式}

ex) defaults write com.apple.screencapture type png

保存形式一覧


  • png

  • gif

  • jpg

  • jp2 (JPEG2000)

  • bmp

  • exr (OpenEXR)

  • pdf

  • psd (Photoshop 形式)

  • pct (PICT)

  • sgi

  • tga

  • tif


保存場所を変更

defaults write com.apple.screencapture location {保存先フォルダ}

ex) defaults delete com.apple.screencapture location ~/Desktop/Screenshot


ウインドウの影が無い状態のスクリーンショットを撮る

defaults write com.apple.screencapture disable-shadow -bool true


解決方法

おそらく開発環境を構築する際に何らかの操作でスクリーンショットの保存形式が変わってしまっているので、デフォルトに戻してあげれば良いです。


  1. コンソールを開く(ターミナル.appまたはiTerm.app)

  2. 以下のコマンドをを実行する

$ defaults delete com.apple.screencapture type

$ killall SystemUIServer

これでCommand + Shift + 4が復活しました :tada: