アプリ版:「スタンプのみでお礼する」機能のリリースについて

jpgの画像ファイルですが、ファイル名やexif情報が異なっていても
画像そのものが一緒だったら同一と判断できるような処理をしたい
のですが、容量が最後の1桁まで同じで、画像のサイズが同じなら
同じものと見なすとすれば簡単かなと思ったのですが、
exif情報を変更すると、容量が少し変化してしまいます。
この為、容量は手がかりになりそうもないので、
画像データ部分そのものを比較したいのですが、
画像データ本体の部分をIF文で比較できるような
変数に入れるにはどうしたら良いでしょうか。
たいへん恐れ入りますがご教示頂けたら幸いです。

A 回答 (1件)

BitmapオブジェクトにJPGファイルを読み込んでGetPixelメソッドで比較といった具合でしょう



以下にサンプルコードを書いてみます
例外処理などは省いてますので適宜行ってくださいね
インデントは 全角スペースを使用してます

Function CompJpeg(sName1 as string, sName2 as String) as Boolean
 dim bmp1 as new Bitmap(sName1)
 dim bmp2 as new Bitmap(sName2)
 dim x,y as Integer
 dim c1, c2 as color
 dim bFlag as Boolean
 ' 幅が違えば 不一致
 if bmp1.Width <> bmp2.Width then Return False
 ' 高さが違えば不一致
 if bmp1.Height <> bmp2.Height then Return False

 bFlag = false
 for y=0 to bmp1.Height -1
  for x=0 to bmp1.Width -1
   ' 2つのファイルの色情報を取得
   c1 = bmp1.GetPixel(x,y)
   c2 = bmp2.GetPixel(x,y)
   ' 2つのファイルの色情報を比較
   bFlag = c1.ToArgb <> c2.ToArgb
   if bFlag then exit for
  next
  if bFlag then exit for
 next
 ' 結果を出力
 return bFlag
End Function
    • good
    • 1
この回答へのお礼

redfox63さま
ご回答ありがとうございます。
具体的なコードまで書いて頂いてとても助かります。
ありがたく活用させて頂きたいと思います。
ありがとうございます!

お礼日時:2007/07/09 13:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!