Advertisement
Guest User

Untitled

a guest
Nov 13th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.39 KB | None | 0 0
  1. import java.awt.image.BufferedImage;
  2. import java.awt.image.DataBuffer;
  3. import java.io.File;
  4. import java.io.IOException;
  5. import java.nio.file.Files;
  6. import java.nio.file.Path;
  7. import java.nio.file.Paths;
  8. import java.util.stream.Collectors;
  9. import java.util.stream.Stream;
  10.  
  11. import javax.imageio.ImageIO;
  12.  
  13. public class Test {
  14.  
  15. public static double compareImage(File fileA, File fileB) {
  16.  
  17. double percentage = 0.0;
  18. try {
  19. // take buffer data from both image files //
  20. BufferedImage biA = ImageIO.read(fileA);
  21. DataBuffer dbA = biA.getData().getDataBuffer();
  22. double sizeA = dbA.getSize();
  23.  
  24. BufferedImage biB = ImageIO.read(fileB);
  25. DataBuffer dbB = biB.getData().getDataBuffer();
  26. double sizeB = dbB.getSize();
  27.  
  28. double count = 0;
  29.  
  30. // compare data-buffer objects //
  31. if (sizeA == sizeB) {
  32.  
  33. for (int i = 0; i < sizeA; i++) {
  34.  
  35. if (dbA.getElem(i) == dbB.getElem(i)) {
  36. count = count + 1;
  37. }
  38.  
  39. }
  40.  
  41.  
  42. percentage = (count * 100) / sizeA;
  43.  
  44. } else {
  45.  
  46. }
  47.  
  48. } catch (Exception e) {
  49. System.out.println("Failed to compare image files ... " ) ;
  50. System.out.println(fileB.getPath());
  51. e.printStackTrace();
  52. }
  53. if (percentage >= 25)
  54. {
  55.  
  56. System.out.println("Image file "+ fileB.getPath()+" is similar to reference file" );
  57. System.out.println("These images are "+ percentage + "% similar" );
  58. System.out.println();
  59. }
  60. return 0;
  61. }
  62.  
  63.  
  64.  
  65.  
  66. public static void main(String[] args) throws IOException {
  67. // TODO Auto-generated method stub
  68. // File B = new File("C:\\Users\\Zack\\Desktop\\Project_1_datasets\\2\\40694.jpg");
  69.  
  70. File fileA = new File("C:\\Users\\Zack\\Desktop\\Project_1_datasets\\2\\40694.jpg");
  71. System.out.println("Reference file is: "+ fileA.getPath());
  72. System.out.println("Start search? (Y/N)");
  73.  
  74. try (Stream<Path> filePathStream=Files.walk(Paths.get("C:\\Users\\Zack\\Desktop\\Project_1_datasets\\"))) {
  75. filePathStream.forEach(filePath -> {
  76. if (Files.isRegularFile(filePath)) {
  77. File fileB = new File(filePath.toString());
  78. compareImage(fileA ,fileB);
  79. }
  80. });
  81. System.out.println("Done searching");
  82. }
  83. }
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement