PCOT関連の掲示板

PCOTの感想、質問、バグ報告受付 / 67

711 コメント
views
1 フォロー
67
ぬるっぽ 2020/07/22 (水) 02:44:38

【お知らせ】

現在PCOTに新しい機能追加を行っており、なかなか更新できずにいます・・・が、なんとか更新の目途がたちそうです!
色々と動かしてみて、ヤバイ不具合がなければ、明日(今日)中に更新したいと思います。
更新する前に先にどんな機能が増えて、何が出来るようになるかを説明させていただきます。

【新機能】
画像翻訳

【概要】
PCOTであらかじめ用意した画像ファイル(※後述)を読み込んで、フリー選択の要領で画像を範囲指定することにより画像ファイル内の文章を翻訳することができます。

【用途】
ゲームのプロローグなどの場合、バンバン文章が進んで選択して翻訳という作業が間に合わない場合などに予めスクリーンショットを撮りためて、後から順次翻訳していく形で使用していただけたらと思います。

※【画像ファイルの取得方法】
PCOT起動中にPrintScreen(Prt Sc)を押すことにより、PCOTはこれを奪って、実行ファイルと同階層に「image」フォルダ、その配下に「プロセス名」フォルダを作成し、その中に取得した画像がPNG形式で保存されます。
あんなに嫌ってた上にバッティングしまくるショートカットを使ったのは、前にショートカットを実装して便利さに味を占めた それがベストソリューションだと確信したからです!w

【画像翻訳の方法】
予め画像が保存されている場合、翻訳表示画面に新設した「画像翻訳」ボタンを押すと、簡易画像ビューアーが起動します。簡易画像ビューアーにある「選択」ボタンを押すとキャプチャー画面が起動するので、フリー選択の要領で翻訳したい箇所を選択すると、翻訳表示画面に翻訳結果が表示される仕組みです。

【簡易画像ビューアーの操作方法】
「←」キー・・・前の画像を表示
「→」キー・・・(あれば)次の画像を表示
「マウスホイール」・・・画像の拡大/縮小
「画像上をドラッグ」・・・拡大して画像が見切れた場合に画像を動かせます
「選択」ボタン・・・キャプチャー画面が起動します
「閉じる」ボタン・・・簡易画像ビューアーを閉じます(右上の×ボタンも同様)
※簡易画像ビューアーを閉じた場合は、閉じた状態を覚えていて、次に画像翻訳ボタンを押すと前の状態が復元されます。尚、プロセスを再選択したりPCOTを終了すると復元情報は失われます。

説明は以上になります。早ければ今日の夜には更新できると思うのでご期待ください。

最後に・・・愚痴です。
今回の更新にあたって、PrintScreenを奪って画像を保存するのはそんな大した手間ではなかったんですが・・・簡易画像ビューアー・・・これがとてつもない難関でした・・・というか、迷走しまくりました。

後進のために以下に迷走の経緯を書きますw

  • 画像を普通に拡大する手法・・・滅茶苦茶処理が重くなって断念
  • ScaleTransformで描画・・・画像を動かすと重くなって断念(のちにRefresh呼べば済むことに気づき凹む)
  • OpenCvSharp導入・・・Resizeメソッドで拡大できる!が、やっぱり滅茶苦茶処理が重たくなって断念
  • オフセット描画を独自実装・・・実装できたものの、拡大前拡大後のマウスの位置のオフセット座標を覚える方法が分からず・・・orz
  • マウスのオフセット座標計算・・・上手く行きかけたものの、この辺りでちょっと病んできましたw
  • ネットで画像ビューアを検索・・・アフィン変換というのを使えばうまくいくらしい(光明が見える)
  • アフィン変換を使用して実装・・・今までの苦労を思うと月とスッポンレベルで上手くいく→完成!
    という感じでした。

そんなにムキにならんでも・・・と思われなくもないですが、最初PCOT上で画像を選択してユーザーが使用している既存アプリの画像ビューアを開いて、それを翻訳できる形にしようと思ったのですが・・・どうしても操作の手間が増えるので、できるならPCOT内で全て完結させたいと思い、頑張りました。

というわけで、久々の私信です。
>>synctam様
見ているかどうか分かりませんが、synctam様の過去の記事「synctamの雑談日記: ゲーム画面翻訳ツール作成中・・・その1」で触れられていた「ウィンドウサイズを変更された場合は翻訳できない」とありますが、アフィン変換を使用すれば、その問題は解決できそうです。
イメージ的には変更前の画面サイズを設定ファイルなどで覚えておき、現在の画面サイズ取得時に、元の画面と現在の画面の差異(比率)を計算し、キャプチャー画面の比率をそれに倣って変更、アフィン変換によって、元の画像サイズに対して、倍率変更を行い、設定された選択範囲のオフセット座標を求めれば行けそうな気がします。
未検証なので分かりませんが、少なくてもオフセット描画を独自実装(白目)するよりは簡単な気がします。
ただ、PCOTの方は・・・流石にそんなに頻繁に画面サイズを変えたりしないだろうという前提で作っているので、今から対応させようとすると大改修が必要になるため、対応予定はありません・・・。
以上、ご参考になれば幸いです。

あと、今更ですがPCOTをTwitterで広めてくださってありがとうございます。

通報 ...