2枚の画像から差分を抽出
こちらのページでImageMagickのコマンドラインツールを使って2枚の画像から差分を抽出する方法が紹介されていたけど、こういう事?すげー安直な気もするけど。。。
// 比較する画像はお互いの縦横サイズが同一である画像を前提 private Bitmap getDifference( ){ Bitmap bitmapA = BitmapFactory.decodeResource( getResources( ), R.drawable.r01 ).copy( Bitmap.Config.ARGB_8888, true ); Bitmap bitmapB = BitmapFactory.decodeResource( getResources( ), R.drawable.r02 ).copy( Bitmap.Config.ARGB_8888, true ); int heightA = bitmapA.getHeight( ); int widthA = bitmapA.getWidth( ); int heightB = bitmapB.getHeight( ); int widthB = bitmapB.getWidth( ); int[] pixelsA = new int[( widthA * heightA )]; int[] pixelsB = new int[( widthB * heightB )]; bitmapA.getPixels( pixelsA, 0, widthA, 0, 0, widthA, heightA ); bitmapB.getPixels( pixelsB, 0, widthB, 0, 0, widthB, heightB ); for( int YY = 0; YY < widthA; ++YY ){ for( int XX = 0; XX < heightA; ++XX ){ int bitmapColorA = pixelsA[( YY + XX * widthA )]; int bitmapColorB = pixelsB[( YY + XX * widthA )]; int aaA = Color.alpha( bitmapColorA ); int rrA = Color.red( bitmapColorA ); int ggA = Color.green( bitmapColorA ); int bbA = Color.blue( bitmapColorA ); int aaB = Color.alpha( bitmapColorB ); int rrB = Color.red( bitmapColorB ); int ggB = Color.green( bitmapColorB ); int bbB = Color.blue( bitmapColorB ); // hsv[0] is Hue [0.0f .. 360.0f] // hsv[1] is Saturation [0.0f...1.0f] // hsv[2] is Value [0.0f...1.0f] // float[] hsvA = new float[3]; // Color.RGBToHSV( rrA, ggA, bbA, hsvA ); // float[] hsvB = new float[3]; // Color.RGBToHSV( rrB, ggB, bbB, hsvB ); // hsvB[0] = hsvA[0]; // hsvB[1] = hsvA[1]; // hsvB[2] = hsvA[2]; // bitmapColorB = Color.HSVToColor( hsvB ) // aaB = Color.alpha( bitmapColorB ); // rrB = Color.red( bitmapColorB ); // ggB = Color.green( bitmapColorB ); // bbB = Color.blue( bitmapColorB ); int aa, rr, gg, bb; if( rrA == rrB && ggA == ggB && bbA == bbB ){ aa = 255; rr = 0; gg = 0; bb = 0; } else { aa = aaA; rr = rrA; gg = ggA; bb = bbA; } pixelsA[( YY + XX * widthA )] = Color.argb( aa, rr, gg, bb ); } } return Bitmap.createBitmap( pixelsA, widthA, heightA, Bitmap.Config.ARGB_8888 ); }
それにしてもImageMagickは宝の山な感じがするなぁ。。。サボってないでソースコードを確認しろって事かしら。_| ̄|○