Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package imageinspector.readers;
- import imageinspector.data.Metadata;
- public class BMPMetadataReader implements MetadataReader {
- private byte[] b;
- private int height;
- private int width;
- private StringBuilder sb;
- private int bpp;
- private Metadata metadata;
- public BMPMetadataReader(byte[] b) {
- this.b = b;
- read(b);
- }
- @Override
- public void read(byte[] b) {
- getWidth();
- getHeight();
- getBpp();
- /*OUTPUT*/
- System.out.println("Type: .BMP");
- System.out.println("Width: " + width + " pixels");
- System.out.println("Height: " + height + " pixels");
- System.out.println("Bits per pixel: " + bpp);
- metadata = new Metadata(width, height, bpp);
- }
- private void getWidth() {
- String w1, w2;
- sb = new StringBuilder();
- for (int i = 18; i < 19; i++) {
- sb.append(Integer.toHexString(b[i]));
- }
- if (sb.length() > 3) {
- w1 = sb.substring(6, sb.length());
- } else {
- w1 = sb.toString();
- }
- sb = new StringBuilder();
- for (int i = 19; i < 20; i++) {
- sb.append(Integer.toHexString(b[i]));
- }
- if (sb.length() > 3) {
- w2 = sb.substring(6, sb.length());
- } else {
- w2 = sb.toString();
- }
- String w3 = w2 + w1;
- width = (int) Long.parseLong(w3, 16);
- }
- private void getHeight() {
- String h1, h2;
- sb = new StringBuilder();
- for (int i = 22; i < 23; i++) {
- sb.append(Integer.toHexString(b[i]));
- }
- if (sb.length() > 3) {
- h1 = sb.substring(6, sb.length());
- } else {
- h1 = sb.toString();
- }
- sb = new StringBuilder();
- for (int i = 23; i < 24; i++) {
- sb.append(Integer.toHexString(b[i]));
- }
- if (sb.length() > 3) {
- h2 = sb.substring(6, sb.length());
- } else {
- h2 = sb.toString();
- }
- String h3 = h2 + h1;
- height = (int) Long.parseLong(h3, 16);
- }
- private void getBpp() {
- sb = new StringBuilder();
- for (int i = 28; i < 29; i++) {
- sb.append(Integer.toHexString(b[i]));
- }
- String b1 = sb.toString();
- sb = new StringBuilder();
- for (int i = 29; i < 30; i++) {
- sb.append(Integer.toHexString(b[i]));
- }
- String b2 = sb.toString();
- String b3 = b2 + b1;
- bpp = (int) Long.parseLong(b3, 16);
- }
- }
Add Comment
Please, Sign In to add comment