lycheejam's tech log

チラ裏のメモ帳 | プログラミングは苦手、インフラが得意なつもり。

C#で画像差分抽出

会社でシステムテストを行っていて
こう言うのがあったら便利だなーっと思ってぱーっと書いてみました。

使えるほど突き詰めてないです。

作ったもの

画像1(比較元)と画像2(比較先)の差分を抽出して画像3(結果)を生成する。
ただピクセル1個ずつ比較して一致しないピクセルに紫色を入れているだけです。
下記の画像を参照
f:id:HM_Atlas:20170918021322j:plain

糞コード

こんな感じ
System.Drawing.BitmapクラスのGetPixel/SetPixelを使うと動作が遅いらしい
※どうせ使われないしどんな感じになるかやりたかっただけだから高速化とか追い求めてません。

Get/SetPixelを使用しない方法は記事最後の参考サイトにのせときやす。


雑感

会社でCOBOLかエクセルで書類作りしかできないから久々にC#触りたくて作った

  • ピクセルの情報に少し差異があるだけで差分になって抽出される。

透明度とか非可逆圧縮形式だとどんどん劣化していくので大変なことになる。
そこらへんもうちょいいじればよかったけど飽きたので知らない
できるのかもわからない。

  • PDF変換機能

会社での使用を想定するならばPDFから何らかの画像形式に変換する。
調べた感じたぶんできそうだった。

  • 比較画像の大きさを自由に

比較結果の大きさをサイズが小さい方の画像に合わせている。
リサイズの機能などつけて試してみればよかった。

同種の保存形式は試したけど異なる拡張子は試してない。
もうPixelの色情報が全然違うから無理だよね?

糞コードだし誰の役にも立たないけど
アウトプットが大事だよといろんな人が言っているから何かアウトプットしてみたかった。