package  com.xupp.sxjiesuo;    import  java.text.DecimalFormat;    import  android.R.integer; import  android.graphics.Bitmap; import  android.graphics.BitmapFactory;    /**   * Android图片对比(像素精准对比),速度较慢建议用多线程获取   * @author xupp   * @createData 2013-7-18   */    public  class  PictureContrast {      private  static  int  t =  0 ;      private  static  int  f =  0 ;      public  static  String similarity (String url_one,String url_two) {          //把图片转换为Bitmap          Bitmap bm_one = BitmapFactory.decodeFile(url_one);          Bitmap bm_two = BitmapFactory.decodeFile(url_two);          //保存图片所有像素个数的数组,图片宽×高          int [] pixels_one =  new  int [bm_one.getWidth()*bm_one.getHeight()];          int [] pixels_two =  new  int [bm_two.getWidth()*bm_two.getHeight()];          //获取每个像素的RGB值          bm_one.getPixels(pixels_one, 0 ,bm_one.getWidth(), 0 , 0 ,bm_one.getWidth(),bm_one.getHeight());          bm_two.getPixels(pixels_two, 0 ,bm_two.getWidth(), 0 , 0 ,bm_two.getWidth(),bm_two.getHeight());          //如果图片一个像素大于图片2的像素,就用像素少的作为循环条件。避免报错          if  (pixels_one.length >= pixels_two.length) {              //对每一个像素的RGB值进行比较              for ( int  i =  0 ; i < pixels_two.length; i++){                  int  clr_one = pixels_one[i];                  int  clr_two = pixels_two[i];                  //RGB值一样就加一(以便算百分比)                  if  (clr_one == clr_two) {                      t++;                  } else  {                      f++;                     }              }          } else  {              for ( int  i =  0 ; i < pixels_one.length; i++){                  int  clr_one = pixels_one[i];                  int  clr_two = pixels_two[i];                  if  (clr_one == clr_two) {                      t++;                  } else  {                      f++;                  }              }                         }                     return  "相似度为:" +myPercent(t,t+f);                 }      /**       * 百分比的计算       * @author xupp       * @param y(母子)       * @param z(分子)       * @return 百分比(保留小数点后两位)       */      public  static  String myPercent( int  y, int  z)      {          String baifenbi= "" ; //接受百分比的值           double  baiy=y* 1.0 ;          double  baiz=z* 1.0 ;          double  fen=baiy/baiz;          DecimalFormat df1 =  new  DecimalFormat( "00.00%" );  //##.00%   百分比格式,后面不足2位的用0补齐           baifenbi= df1.format(fen);          return  baifenbi;      }        }

更多相关文章

  1. android图片缩放(指定大小) drawable获取图片后怎么设置图片大小
  2. Android调用相机拍照并返回路径和调用系统图库选择图片
  3. [android]简单方法记载 在adapter中异步加载网络图片
  4. android打开,保存图片到sd卡,显示图片
  5. Android Drawable和Bitmap图片之间转换
  6. android加载gif图片
  7. android从网络获取图片
  8. Android 开发图片压缩/缩略图的方法
  9. android读取系统相机及相册图片(亲测可用)

随机推荐

  1. android:TabHost使用方法
  2. Android(安卓)支持多屏幕机制
  3. android屏幕适配,自动生成不同的dimens.xm
  4. Android(安卓)ImageView 总结
  5. Android的多媒体框架OpenCore(PacketVideo
  6. Android(安卓)不要做错来使内存泄漏
  7. 教你如何开关Android的APN网络
  8. Android不用OnScrollListener采用Gesture
  9. Android(安卓)TensorFlow 智能语音识别
  10. Android(安卓)WebView 使用漏洞