PHP で画像比較 S3対応
- PHP で画像比較 - yoyaのメモ bitmap_comp.php
- PHP で画像比較(2) - yoyaのメモ bitmap_diff.php
- AWS SDK for PHP で S3 アクセス - yoyaのメモ S3_GetFile.php
↑これらの続き。
少し改善と不具合修正と S3 対応をしました。
- 画像差分の度合計算
- 差分画像の生成
改善 (bitmap_comp.php)
以前は、色距離の二乗(Σ{diff^2})の値を出してましたが、平方根をとって距離の値をずばり表示するようにしました。大小しか見ないので二乗のままで良いと思ってましたが、スケールが実感と合わないので。ただ、少し重たくなったと思います。
不具合対応 (bitmap_diff.php)
差分が全くない場合に警告が大量に出るのを修正しました。差分を目立たせるように正規化しますが、差分がないと 0 で割る事になってしまいまして。その場合は単純に真っ黒に塗る事にしました。
S3 対応
s://bucket/path の形式でファイル名を渡す事で S3 のファイルを指摘出来ます。(詳細は前日のエントリを参考)
先日 S3_GetFile.php を作ってたので、これだけで S3 対応出来ます。
if (strncmp($file, 's3://', 5) === 0) { require_once('S3_GetFile.php'); $data = S3_GetFile($file); } else { $data = file_get_contents($file);
無条件で require しても良いんだけど、S3 使わない事の方が多いのに読み込むの勿体ないので、一応必要な時だけという事で。
コマンドの実行例
- ローカルで比較
$ php bitmap_comp.php favicon.png favicon.gif 28.830419214701
- S3 のファイルを比較
$ php bitmap_comp.php s3://yoya/test/favicon.png s3://yoya/test/favicon.gif 28.830419214701
- S3 のファイルの差分画像作成
$ php bitmap_diff.php s3://yoya/test/favicon.png s3://yoya/test/favicon.gif diff.png
- diff.png