Kredens234

Untitled

Jun 5th, 2018
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.61 KB | None | 0 0
  1. package imageinspector.readers;
  2.  
  3. import imageinspector.data.Metadata;
  4.  
  5. public class BMPMetadataReader implements MetadataReader {
  6.  
  7. private byte[] b;
  8. private int height;
  9. private int width;
  10. private StringBuilder sb;
  11. private int bpp;
  12. private Metadata metadata;
  13.  
  14. public BMPMetadataReader(byte[] b) {
  15. this.b = b;
  16. read(b);
  17. }
  18.  
  19. @Override
  20. public void read(byte[] b) {
  21. getWidth();
  22. getHeight();
  23. getBpp();
  24. /*OUTPUT*/
  25. System.out.println("Type: .BMP");
  26. System.out.println("Width: " + width + " pixels");
  27. System.out.println("Height: " + height + " pixels");
  28. System.out.println("Bits per pixel: " + bpp);
  29. metadata = new Metadata(width, height, bpp);
  30. }
  31.  
  32. private void getWidth() {
  33. String w1, w2;
  34. sb = new StringBuilder();
  35. for (int i = 18; i < 19; i++) {
  36. sb.append(Integer.toHexString(b[i]));
  37. }
  38. if (sb.length() > 3) {
  39. w1 = sb.substring(6, sb.length());
  40. } else {
  41. w1 = sb.toString();
  42. }
  43. sb = new StringBuilder();
  44. for (int i = 19; i < 20; i++) {
  45. sb.append(Integer.toHexString(b[i]));
  46. }
  47. if (sb.length() > 3) {
  48. w2 = sb.substring(6, sb.length());
  49. } else {
  50. w2 = sb.toString();
  51. }
  52. String w3 = w2 + w1;
  53. width = (int) Long.parseLong(w3, 16);
  54. }
  55.  
  56. private void getHeight() {
  57. String h1, h2;
  58. sb = new StringBuilder();
  59. for (int i = 22; i < 23; i++) {
  60. sb.append(Integer.toHexString(b[i]));
  61. }
  62. if (sb.length() > 3) {
  63. h1 = sb.substring(6, sb.length());
  64. } else {
  65. h1 = sb.toString();
  66. }
  67. sb = new StringBuilder();
  68. for (int i = 23; i < 24; i++) {
  69. sb.append(Integer.toHexString(b[i]));
  70. }
  71. if (sb.length() > 3) {
  72. h2 = sb.substring(6, sb.length());
  73. } else {
  74. h2 = sb.toString();
  75. }
  76. String h3 = h2 + h1;
  77. height = (int) Long.parseLong(h3, 16);
  78. }
  79.  
  80. private void getBpp() {
  81. sb = new StringBuilder();
  82. for (int i = 28; i < 29; i++) {
  83. sb.append(Integer.toHexString(b[i]));
  84. }
  85. String b1 = sb.toString();
  86. sb = new StringBuilder();
  87. for (int i = 29; i < 30; i++) {
  88. sb.append(Integer.toHexString(b[i]));
  89. }
  90. String b2 = sb.toString();
  91. String b3 = b2 + b1;
  92. bpp = (int) Long.parseLong(b3, 16);
  93. }
  94.  
  95. }
Add Comment
Please, Sign In to add comment