java实现切图并且判断图片是不是纯色/彩色图片

  

整理文档,搜刮出一个java实现切图并且判断图片是否是纯色/彩色图片的代码,稍微整理精简一下做下分享。
  

  

首先上切图的代码

     /* *   *图片剪裁   * @param x距离左上角的x轴距离   * @param y距离左上角的y轴距离   * @param宽度宽度   * @param高度高度   * @param路径图片源   * @param descpath目标位置   */公共静态孔隙imageCut (int x, int y, int宽度,int高度,字符串路径中,字符串descpath) {   FileInputStream=零;   ImageInputStream iis=零;   尝试{   是=new FileInputStream(路径);   字符串fileSuffix=sourcePath.substring (sourcePath.lastIndexOf (“。”) + 1);   Iterator它=ImageIO.getImageReadersByFormatName (fileSuffix);   ImageReader读者=it.next ();   iis=ImageIO.createImageInputStream(是);   读者。setInput (iis,真实);   ImageReadParam参数=reader.getDefaultReadParam ();   矩形矩形=new矩形(x, y,宽度、高度);   param.setSourceRegion(矩形);   BufferedImage bi=读者。阅读(0,参数);   ImageIO。写(bi、fileSuffix新文件(descpath));   }捕捉(例外的前女友){   ex.printStackTrace ();   最后}{   如果(!=null) {   尝试{   is.close ();   }捕捉(IOException e) {   e.printStackTrace ();   }   是=零;   }   如果(iis !=null) {   尝试{   iis.close ();   }捕捉(IOException e) {   e.printStackTrace ();   }   iis=零;   }   }   }      之前      

以上为切图代码,注意:如果不关闭流的话可能会影响其他代码对图片的操作,尤其是删除等操作

  

再来一个自己写的判断是否是纯色图片的代码,稍微改一下可以用来判断是不是彩色图片

     /* *   *判断是否为纯色   * @param imgPath图片源   * @param百分比纯色百分比,即大于此百分比为同一种颜色则判定为纯色,范围(0 - 1)   * @return   * @throws IOException   */公共静态布尔isSimpleColorImg(字符串imgPath,浮动百分比)抛出IOException {   BufferedImage src=https://www.yisu.com/zixun/ImageIO.read(新文件(imgPath));   int高度=src.getHeight ();   int宽度=src.getWidth ();   int数=0,pixTemp=0,像素=0;   for (int i=0;我+ +){<宽度;   (int j=0; <高度;j + +) {   像素=src。getRGB (i, j);   如果(像素==pixTemp)//如果上一个像素点和这个像素点颜色一样的话,就判定为同一种颜色   数+ +;   其他的   数=0;   如果((浮动)数/(高*宽)>=%)//如果连续相同的像素点大于设定的百分比的话,就判定为是纯色的图片   返回true;   pixTemp=像素;   }   }   返回错误;   }      之前      

以上为本人用来判断纯色的代码,逻辑比较简单,具体还要看需求来决定

  

如果是判断彩色的话,可以试试如下逻辑:

  

1,如果有N个像素点各不相同的话可以判定为彩色

  

2,如果图片上有祝辞=N种像素点的话,判断为彩色图片

  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

java实现切图并且判断图片是不是纯色/彩色图片