Advertisement
Guest User

Untitled

a guest
May 27th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.58 KB | None | 0 0
  1. package imfill;
  2.  
  3. import javax.imageio.ImageIO;
  4. import java.awt.image.BufferedImage;
  5. import java.io.File;
  6. import java.io.IOException;
  7.  
  8. public class ImageFill {
  9.  
  10.     private static BufferedImage inputImage;
  11.     private static BufferedImage imfillImage;
  12.  
  13.     public ImageFill(String imFill) throws IOException{
  14.         int[][] inputImg2D ;
  15.         try {
  16.             inputImage = ImageIO.read(new File(imFill));
  17.             imfillImage = new BufferedImage(inputImage.getWidth(),
  18.                     inputImage.getHeight(),
  19.                     inputImage.getType());
  20.  
  21.             inputImg2D = new int[inputImage.getWidth()][inputImage.getHeight()];
  22.  
  23.             for (int i = 0; i < inputImage.getWidth(); i++) {
  24.                 for (int j = 0; j < inputImage.getHeight(); j++) {
  25.                     inputImg2D[i][j] = inputImage.getRGB(i , j);
  26.                 }
  27.             }
  28.  
  29.             inputImg2D = imfillImage(15,inputImg2D);
  30.             for (int i = 0; i < inputImage.getWidth(); i++) {
  31.                 for (int j = 0; j < inputImage.getHeight(); j++) {
  32.                     imfillImage.setRGB(i, j, inputImg2D[i][j]);
  33.                 }
  34.             }
  35.         }
  36.         catch (IOException e) {
  37.             e.printStackTrace();
  38.         }
  39.  
  40.     }
  41.  
  42.     private int[][] imfillImage(int dist, int[][] imgIn) {
  43.         int[][] newImg2D;
  44.         newImg2D = imgIn;
  45.         int counter;
  46.         for (int i = dist; i < imgIn.length - dist; i++) {
  47.             for (int j = dist; j < imgIn[1].length - dist; j++) {
  48.                 counter = 0;
  49.                 for (int k = 0; k < dist; k++) { //pixel sides
  50.                     if (imgIn[i-k][j] > 0xff808080)
  51.                     {
  52.                         counter++;
  53.                         break;
  54.                     }
  55.                 }
  56.                 for (int k = 0; k < dist; k++) {
  57.                     if (imgIn[i][j-k] > 0xff808080) {
  58.                         counter++;
  59.                         break;
  60.                     }
  61.                 }
  62.                 for (int k = 0; k < dist; k++) {
  63.                     if (imgIn[i+k][j] > 0xff808080)
  64.                     {
  65.                         counter++;
  66.                         break;
  67.                     }
  68.                 }
  69.                 for (int k = 0; k < dist; k++) {
  70.                     if (imgIn[i][j + k] > 0xff808080) {
  71.                         counter++;
  72.                         break;
  73.                     }
  74.                 } //end of pixel sides
  75.                 for (int k = 0; k < dist; k++) { //pixel vertex area
  76.                     if (imgIn[i-k][j-k] > 0xff808080)
  77.                     {
  78.                         counter++;
  79.                         break;
  80.                     }
  81.                 }
  82.                 for (int k = 0; k < dist; k++) {
  83.                     if (imgIn[i+k][j+k] > 0xff808080)
  84.                     {
  85.                         counter++;
  86.                         break;
  87.                     }
  88.                 }
  89.                 for (int k = 0; k < dist; k++) {
  90.                     if (imgIn[i - k][j + k] > 0xff808080) {
  91.                         counter++;
  92.                         break;
  93.                     }
  94.                 }
  95.                 for (int k = 0; k < dist; k++) {
  96.                     if (imgIn[i + k][j - k] > 0xff808080) {
  97.                         counter++;
  98.                         break;
  99.                     }
  100.                 }
  101.                 if (counter == 8)  newImg2D[i][j] = 0xffffffff;
  102.             }
  103.         }
  104.         return newImg2D;
  105.     }
  106.  
  107.     public static BufferedImage getFilledImage() {
  108.         return imfillImage;
  109.     }
  110.  
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement