Windowsで画像を保存したい場合は、スクリーンショットを使用する方法や、右クリックで表示されるメニューから「画像をコピー」等があります。
ですが、中にはクリップボードに保存されただけで、画像をファイルとして保存するには「ペイント」等のツールでペーストして保存する必要がある場合があります。
いちいちツールにペーストすることが面倒という場合のために、簡単に保存する方法の1つを紹介します。
クリップボード上の画像を簡単に保存する方法
クリップボード上の画像を簡単に保存するにはPowerShellのスクリプトを使用します。最初の準備が多少手間ですが、1度用意しておけば後は簡単に実行することができます。
PowerShellのスクリプトを作成する
メモ帳等のテキストエディターに以下の内容をコピーし、拡張子は「.ps1」で保存してください。ファイル名は任意で問題ありません。
※この時に「$FilePath」に日本語が含まれる場合は、「エンコード」部分をかならず「ANSI」に変更してから保存してください。
Add-Type -AssemblyName System.Windows.Forms If ([Windows.Forms.Clipboard]::ContainsImage() -eq $True) { $Image = [Windows.Forms.Clipboard]::GetImage() $FilePath = "C:\Users\[ユーザー名]\Desktop" $FileName = (Get-Date -Format "yyyyMMddHHmmss") + ".png" $ImagePath = Join-Path $FilePath $FileName $Image.Save($ImagePath, [System.Drawing.Imaging.ImageFormat]::Png) }
「$FilePath」はファイルを保存するフォルダーです。黄色下線部分は画像を保存したいフォルダーへ自由に変更してください。
「$FileName」は保存するファイル名です。上書きしたりエラーにならないように"年月日時分秒"で保存するように指定しています。
また、記載したスクリプトは「PNG形式」で保存するスクリプトです。その他の形式で保存することもできます。その場合は、赤下線の部分をそれぞれ以下のように変更してください。
JPEG形式で保存する場合)
---------------- $FileName = (Get-Date -Format "yyyyMMddHHmmss") + ".jpg" ---------------- $Image.Save($ImagePath, [System.Drawing.Imaging.ImageFormat]::Jpeg) }
TIFF形式で保存する場合)
---------------- $FileName = (Get-Date -Format "yyyyMMddHHmmss") + ".tiff" ---------------- $Image.Save($ImagePath, [System.Drawing.Imaging.ImageFormat]::Tiff) }
BMP形式で保存する場合)
---------------- $FileName = (Get-Date -Format "yyyyMMddHHmmss") + ".bmp" ---------------- $Image.Save($ImagePath, [System.Drawing.Imaging.ImageFormat]::Bmp) }
スクリプトを実行するための準備
スクリプトファイルの準備できましたが、このままでは使い勝手が悪いためショートカットを用意します。「項目の場所を入力してください(リンク先)」を以下の内容でショートカットを作成してください。
powershell -ExecutionPolicy RemoteSigned -windowstyle hidden -File [作成したスクリプトファイルのフルパス]
ショートカットの作り方がわからない場合は以下の記事をご覧ください。
スクリプトファイルの使い方
スクリプトファイルを実行するには、作成したショートカットをダブルクリックするだけです。
クリップボードに画像が保存されている状態でショートカットをダブルクリックすると、スクリプトに指定したフォルダーに画像が保存されます。
コメント
大変助かりました。本当にわかり良くまとめられていて助かりました。便利に使えています。久しぶりにPowerShellを使って感動もしました。ありがとうございました。
とおりすがりさん
見ていただきありがとうございます。
お役に立てて幸いです。
こんにちは。
$FilePath に日本語(日本語のフォルダ名)が含まれていると、うまく保存されないようです。
以下のような記事を見つけましたが、自分では対処できません。
対応していただければ助かります。
PowerShellスクリプトコードに日本語が存在する場合にエラーが発生する場合の対応
(https://feeld-uni.com/?p=644)
よろしくお願いいたします。
返信が遅くなり申し訳ありません。記事に記載を追加しました。
メモ帳で保存時に「エンコード」部分を「ANSI」に変更して保存してもらうと解決すると思います。