クリップボードの更新時に中の画像をキャプチャできるようにした
Pixcren1.4.0
スクショアプリ
変更点
クリップボードを監視して更新されたとき、
画像があった場合に保存することができるようにした
キャプチャ時の挙動
クリップボード更新されたら保存を使ってみる
キャプチャ時の挙動を特殊にした
それ以外の設定は適当なもの
画像をコピーするアプリなら何でもいいはず
今回は動画編集アプリのaviutlで読み込んだゲーム動画のフレームをコピー
ゲームはプレイステーション2の真・三國無双3は光栄(コーエーテクモ)から
aviutlのメニューの編集から現在のフレームをクリップボードにコピーを実行すると
画像ファイルとして保存される
不具合
一回のコピーで同じ画像が複数保存されることがある
これはアプリに依って違う感じで、よく起こるアプリはエクセルで
たとえば
このセル範囲を
コピーしたら
全く同じセル範囲の画像が4枚保存された
これも毎回4枚ではなくて、2,3枚のときが多くて、たまに1枚、4枚保存されたのはこれが初めてと不安定で、原因も不明
画像自体は期待通りなんだけどねえ
ダウンロード先
https://github.com/gogowaten/ScreenCapture/releases/download/1.4.0/Pixcren1.4.0.zip
github.com
Pixcren1.4.0.zipがそれ
作成動作環境
- Windows 10 Home バージョン 21H1
- Visual Studio Community 2019
- WPF
- C#
- .NET 5
動作に必要なのは.NET 5がインストール済みのWindowsで、.NET Frameworkだけでは動かないはず
今回の方法は以前の記事から
クリップボードの更新監視は
gogowaten.hatenablog.com
クリップボードから画像の取得は
gogowaten.hatenablog.com
このあたりを使ってクリップボードからの画像取得部分は
クリップボードから取得した画像はすべてのピクセルのアルファ値が0(完全透明)の何も映っていない画像になっていることがあるので、その場合はピクセルフォーマットをBgr32に変換することでアルファ値を255にしている
完全透明画像かどうかの判定は、左上の1ピクセルだけで済ませている、2379行目
クリップボードが更新されたときは最初にエクセル系かそれ以外のアプリなのかの判定を雑にしているのが2430行目
日記
WPFか.NETなのかわからんけど、クリップボードからの画像取得がイマイチなんだよねえ、今度の新しいVisual Studioや.NET 6ではそのへんが直っているといいねえ
動画を久しぶりにいじった
aviutlの新しいバージョン(2年前)が出ていた!
コーデックもx265もあまり使ったことがないのにvp9、av1とか新しいのが出てたので少し試したけど使い方がよくわからんのとPCスペックが足りなくて時間かかり過ぎな割には画質はそれほどでも…って感じだった
x265はaviutlで使える便利なプラグインの拡張x265出力(GUI)Exで色々設定を変えて試したけど、画質はx264と変わらない割には時間だけは5倍以上かかるので昔ながらのx264が一番いいって結果になったのは少し残念だった
それでもテストに使ったのが記事にもある真・三國無双3のプレイ動画だけなので、動きの少ない動画とか平坦な動画だと違ってくるのかもしれない、あとフルHD以上の解像度とか
x264はエンコード速度が速いところがいい、640x480とかならmedium設定で100fps近く出る、x265だと同じmediumで30fpsで最低限つけたいオプションを付けたら20fps以下になるから10分の動画だと60 / 20=3で10 * 3 = 30分以上かかる、x264なら80fpsなので60 / 80 = 0.75で10 * 0.75 = 7.5は7分30秒で終わる
関連記事
次回のPixcrenは3日後 gogowaten.hatenablog.com
前回のWPF記事は130日前
前回のPixcren記事
最初のPixcrenは267日前