2016-03-21 37 views
-1

Verilen görüntünün boş olup olmadığını veya aynı piksel değerlerine sahip olduğunu saptamam gerekiyor. Lütfen aşağıdaki kodu bulun. . burada bir hoşgörü kurmak istiyorum. Bu mantığa üst, alt, sol ve sağ 20 piksel geçmek istemiyorum. lütfen yardım et!Bir görüntünün üst, alt, sağ ve solundaki 20 pikseli aydınlatmalı ve ardından piksel değerlerini karşılaştırmam gerekiyor

for (String pic : Finallist) { 
    BufferedImage image = ImageIO.read(new File(pic)); 
    final byte[] pixels = ((DataBufferByte) image.getRaster().getDataBuffer()).getData(); 
    final int width = image.getWidth(); 
    final int height = image.getHeight(); 
    final boolean hasAlphaChannel = image.getAlphaRaster() != null; 
    boolean blankImage=true; 
    int[][] result = new int[height][width]; 
    if (hasAlphaChannel) { 
     final int pixelLength = 4; 
     for (int pixel = 0, row = 0, col = 0; pixel < pixels.length; pixel += pixelLength) { 
      int argb = 0; 
      argb += (((int) pixels[pixel] & 0xff) << 24); // alpha 
      argb += ((int) pixels[pixel + 1] & 0xff); // blue 
      argb += (((int) pixels[pixel + 2] & 0xff) << 8); // green 
      argb += (((int) pixels[pixel + 3] & 0xff) << 16); // red 
      result[row][col] = argb; 
      if(result[row][col]!=result[0][0]) { 
       blankImage=false; 
      } 
      col++; 

      if (col == width) { 
       col = 0; 
       row++; 
      } 
     } 
    } else { 
     final int pixelLength = 3; 
     for (int pixel = 0, row = 0, col = 0; pixel < pixels.length; pixel += pixelLength) { 
      int argb = 0; 
      argb += -16777216; // 255 alpha 
      argb += ((int) pixels[pixel] & 0xff); // blue 
      argb += (((int) pixels[pixel + 1] & 0xff) << 8); // green 
      argb += (((int) pixels[pixel + 2] & 0xff) << 16); // red 
      result[row][col] = argb; 
      if(result[row][col]!=result[0][0]) { 
       blankImage=false; 
      } 
      col++; 

      if (col == width) { 
       col = 0; 
       row++; 
      }    
     } 
    } 

    if(blankImage==true) { 
     try { 
      System.out.println("Blank image found and its deleted"); 
      File f = new File(pic); 
      f.delete(); 
     } catch(Exception e) { 
      System.out.println("Exception"+e); 
     } 
    }else { 
     FinalListWithOutBlank.add(pic); 
    } 
} 

Havadaki her şeyi istiyorum! Benim kod performans ağrı olmayacak şekilde .. Ben sadece .. bu mantıkla içine uzanmak için bu pikseli atlamak isteyen

cevap

0

Kopya

BufferedImage imageForEvaluation = image.getSubimage(x, y, width, height); 

ile başka bir görüntüye ilgi istenilen alanı ve mantığınız için bu resmi kullanın.

+0

Performans açısından çok acı çekeceğini düşünüyorum. Bu piksellerin havaya yayılmasının başka bir yolu var mı? –

+1

Denedin mi? – Brain