Obtaining Size or Dimension of Images


This Post will help you to obtain the Height or Width of one Image if the type correspond to (BMP, PNG, GIF, JPG, TIF or WMF).

Now, I made a resume of code (Java, PHP) with this porpouse.

Obtaining of the Image’s Bytes

ImageFileName: is the path of file of the image.
BF: is an array of bytes containing the image’s information.

Java

byte[] BF = new byte[(int)(new File(ImageFileName).length())];
FileInputStream fis;
try {
  fis = new FileInputStream(ImageFileName);
  fis.read(BF);
  fis.close();
}
catch (FileNotFoundException fnfe) { }
catch (EOFException eofe) { }

PHP

$fis = fopen($ImageFileName, "rb");
if ($fis!=false) {
  $BF = NULL;
  while (!feof($fis)) {
    $BF .= fread($fis, 8192);
  }
  fclose($fis);
}

Reading With Scripts

JSP

byte[] BF = null;
int Height = 0;
int Width = 0;
String Type = null;
if(ServletFileUpload.isMultipartContent(request)) {
  ServletFileUpload SFU = new ServletFileUpload(new DiskFileItemFactory());
  try {
    List mylist = SFU.parseRequest(request);
    for (int i = 0; i < mylist.size(); i++) {
      FileItem FItem = (FileItem)mylist.get(i);
      if (FItem.getFieldName().equals("SelectFile")) {
        if (FItem.getName().length() > 0) {
          out.println("<br>"+"The Name of Image is: "+FItem.getName()+"<br>");
          BF = FItem.get();
        }
        break;
      }
    }
  }
  catch(FileUploadException e) { out.println(e.toString()); }
}

PHP

$BF = NULL;
$Height = 0;
$Width = 0;
$Type = NULL;
if (is_uploaded_file($_FILES["SelectFile"]["tmp_name"])) {
  print("<br>"."The Name of Image is: ".$_FILES["SelectFile"]["name"]."<br>");
  $fis = fopen($_FILES["SelectFile"]["tmp_name"], "rb");
  if ($fis!=false) {
    while (!feof($fis)) {
      $BF .= fread($fis, 8192);
    }
    fclose($fis);
  }
}

Bytes to Integer – Big Endianness

Java

int Byte2IntBig(byte Byte08, byte Byte00) {
  return (
      ((Byte08) << 8)|
      ((Byte00 & 0xFF) << 0));
}
int Byte2IntBig(byte Byte24, byte Byte16, byte Byte08, byte Byte00) {
  return (
      ((Byte24) << 24)|
      ((Byte16 & 0xFF) << 16)|
      ((Byte08 & 0xFF) << 8)|
      ((Byte00 & 0xFF) << 0));
}

PHP

function Byte2IntBig($Byte08, $Byte00) {
  if (func_num_args() == 4) {
    $argv = func_get_args();
    $Byte24 = $argv[0];
    $Byte16 = $argv[1];
    $Byte08 = $argv[2];
    $Byte00 = $argv[3];
    return (
        ($Byte24 << 24)|
        (($Byte16 & 0xFF) << 16)|
        (($Byte08 & 0xFF) << 8)|
        (($Byte00 & 0xFF) << 0));
  } else {
    if ($Byte08 > 127) {
      return (Byte2IntBig(255, 255, $Byte08, $Byte00));
    } else {
      return (
          ($Byte08 << 8)|
          (($Byte00 & 0xFF) << 0));
    }
  }
}

Bytes to Integer – Little Endianness

Java

int Byte2IntLit(byte Byte00, byte Byte08) {
  return (
      ((Byte08) << 8)|
      ((Byte00 & 0xFF) << 0));
}
int Byte2IntLit(byte Byte00, byte Byte08, byte Byte16, byte Byte24) {
  return (
      ((Byte24) << 24)|
      ((Byte16 & 0xFF) << 16)|
      ((Byte08 & 0xFF) << 8)|
      ((Byte00 & 0xFF) << 0));
}

PHP

function Byte2IntLit($Byte00, $Byte08) {
  if (func_num_args() == 4) {
    $argv = func_get_args();
    $Byte00 = $argv[0];
    $Byte08 = $argv[1];
    $Byte16 = $argv[2];
    $Byte24 = $argv[3];
    return (
        ($Byte24 << 24)|
        (($Byte16 & 0xFF) << 16)|
        (($Byte08 & 0xFF) << 8)|
        (($Byte00 & 0xFF) << 0));
  } else {
    if ($Byte08 > 127) {
      return (Byte2IntLit($Byte00, $Byte08, 255, 255));
    } else {
      return (
          ($Byte08 << 8)|
          (($Byte00 & 0xFF) << 0));
    }
  }
}

Integer to Bytes – Big Endianness

Java

byte[] Int2ByteBig(Integer int0) {
  byte[] ArregloByte = new byte[4];
  ArregloByte[0] = (byte)((int0 >> 0) & 0xFF);
  ArregloByte[1] = (byte)((int0 >> 8) & 0xFF);
  ArregloByte[2] = (byte)((int0 >> 16) & 0xFF);
  ArregloByte[3] = (byte)((int0 >> 24) & 0xFF);
  return ArregloByte;
}

PHP

function Int2ByteBig($int0) {
  $ArregloByte = array();
  $ArregloByte[] = (($int0 >> 0) & 0xFF);
  $ArregloByte[] = (($int0 >> 8) & 0xFF);
  $ArregloByte[] = (($int0 >> 16) & 0xFF);
  $ArregloByte[] = (($int0 >> 24) & 0xFF);
  return $ArregloByte;
}

Integer to Bytes – Little Endianness

Java

byte[] Int2ByteLit(Integer int0) {
  byte[] ArregloByte = new byte[4];
  ArregloByte[0] = (byte)((int0 >> 24) & 0xFF);
  ArregloByte[1] = (byte)((int0 >> 16) & 0xFF);
  ArregloByte[2] = (byte)((int0 >> 8) & 0xFF);
  ArregloByte[3] = (byte)((int0 >> 0) & 0xFF);
  return ArregloByte;
}

PHP

function Int2ByteLit($int0) {
  $ArregloByte = array();
  $ArregloByte[] = (($int0 >> 24) & 0xFF);
  $ArregloByte[] = (($int0 >> 16) & 0xFF);
  $ArregloByte[] = (($int0 >> 8) & 0xFF);
  $ArregloByte[] = (($int0 >> 0) & 0xFF);
  return $ArregloByte;
}

BMP

Java

if (BF[0]==(byte)66 && BF[1]==(byte)77) {
  Type = "BMP";
  Height = Byte2IntLit(BF[22],BF[23]);
  Width = Byte2IntLit(BF[18],BF[19]);
}

PHP

if ($BF[0]==chr(66) && $BF[1]==chr(77)) {
  $Type = "BMP";
  $Height = Byte2IntLit(ord($BF[22]),ord($BF[23]));
  $Width = Byte2IntLit(ord($BF[18]),ord($BF[19]));
}

PNG

Java

if (BF[0]==(byte)137 && BF[1]==(byte)80 && BF[2]==(byte)78) {
  Type = "PNG";
  Height = Byte2IntBig(BF[22],BF[23]);
  Width = Byte2IntBig(BF[18],BF[19]);
}

PHP

if ($BF[0]==chr(137) && $BF[1]==chr(80) && $BF[2]==chr(78)) {
  $Type = "PNG";
  $Height = Byte2IntBig(ord($BF[22]),ord($BF[23]));
  $Width = Byte2IntBig(ord($BF[18]),ord($BF[19]));
}

GIF

Java

if (BF[0]==(byte)71 && BF[1]==(byte)73 && BF[2]==(byte)70) {
  Type = "GIF";
  Height = Byte2IntLit(BF[8],BF[9]);
  Width = Byte2IntLit(BF[6],BF[7]);
}

PHP

if ($BF[0]==chr(71) && $BF[1]==chr(73) && $BF[2]==chr(70)) {
  $Type = "GIF";
  $Height = Byte2IntLit(ord($BF[8]),ord($BF[9]));
  $Width = Byte2IntLit(ord($BF[6]),ord($BF[7]));
}

JPG

Java

if (BF[0]==(byte)255 && BF[1]==(byte)216 && BF[2]==(byte)255 && BF[3]==(byte)224) {
  int PJPG = 2;
  while (PJPG < BF.length) {
    String M = String.format("%02X%02X", BF[PJPG+0],BF[PJPG+1]);
    if (M.equals("FFC0") || M.equals("FFC1") || M.equals("FFC2") ||         M.equals("FFC3")) {
      Type = "JPG";
      Height = Byte2IntBig(BF[PJPG+5],BF[PJPG+6]);
      Width = Byte2IntBig(BF[PJPG+7],BF[PJPG+8]);
    }
    if (M.equals("FFDA")) {
      break;
    }
    PJPG = PJPG+2+Byte2IntBig(BF[PJPG+2],BF[PJPG+3]);
  }
}

PHP

if ($BF[0]==chr(255) && $BF[1]==chr(216) && $BF[2]==chr(255) && $BF[3]==chr(224)) {
  $PJPG = 2;
  while ($PJPG < strlen($BF)) {
    $M = sprintf("%02X%02X", ord($BF[$PJPG+0]),ord($BF[$PJPG+1]));
    if ($M=="FFC0" || $M=="FFC1" || $M=="FFC2" || $M=="FFC3") {
      $Type = "JPG";
      $Height = Byte2IntBig(ord($BF[$PJPG+5]),ord($BF[$PJPG+6]));
      $Width = Byte2IntBig(ord($BF[$PJPG+7]),ord($BF[$PJPG+8]));
    }
    if ($M=="FFDA") {
      break;
    }
    $PJPG = $PJPG+2+Byte2IntBig(ord($BF[$PJPG+2]),ord($BF[$PJPG+3]));
  }
}

TIF – Little Endianness

Java

if (BF[0]==(byte)73 && BF[1]==(byte)73 && BF[2]==(byte)42 && BF[3]==(byte)0) {
  int PTIF = Byte2IntLit(BF[4],BF[5],BF[6],BF[7]);
  Type = "TIF";
  int NumDirEntries = Byte2IntLit(BF[PTIF+0],BF[PTIF+1]);
  PTIF += 2;
  for (int i = 0; i < NumDirEntries;i++) {
    if (String.format("%02X%02X", BF[PTIF+0],BF[PTIF+1]).equals("0101")) {
      Height = Byte2IntLit(BF[PTIF+8],BF[PTIF+9]);
    }
    if (String.format("%02X%02X", BF[PTIF+0],BF[PTIF+1]).equals("0001")) {
      Width = Byte2IntLit(BF[PTIF+8],BF[PTIF+9]);
    }
    PTIF += 12;
  }
}

PHP

if ($BF[0]==chr(73) && $BF[1]==chr(73) && $BF[2]==chr(42) && $BF[3]==chr(0)) {
  $PTIF = Byte2IntLit(ord($BF[4]),ord($BF[5]),ord($BF[6]),ord($BF[7]));
  $Type = "TIF";
  $NumDirEntries = Byte2IntLit(ord($BF[$PTIF+0]),ord($BF[$PTIF+1]));
  $PTIF += 2;
  for ($i = 0; $i < $NumDirEntries;$i++) {
    if (sprintf("%02X%02X", ord($BF[$PTIF+0]),ord($BF[$PTIF+1]))=="0101") {
      $Height = Byte2IntLit(ord($BF[$PTIF+8]),ord($BF[$PTIF+9]));
    }
    if (sprintf("%02X%02X", ord($BF[$PTIF+0]),ord($BF[$PTIF+1]))=="0001") {
      $Width = Byte2IntLit(ord($BF[$PTIF+8]),ord($BF[$PTIF+9]));
    }
    $PTIF += 12;
  }
}

TIF – Big Endianness

Java

if (BF[0]==(byte)77 && BF[1]==(byte)77 && BF[2]==(byte)0 && BF[3]==(byte)42) {
  int PTIF = Byte2IntBig(BF[4],BF[5],BF[6],BF[7]);
  Type = "TIF";
  int NumDirEntries = Byte2IntBig(BF[PTIF+0],BF[PTIF+1]);
  PTIF += 2;
  for (int i = 0; i < NumDirEntries;i++) {
    if (String.format("%02X%02X", BF[PTIF+0],BF[PTIF+1]).equals("0101")) {
      Height = Byte2IntBig(BF[PTIF+8],BF[PTIF+9]);
    }
    if (String.format("%02X%02X", BF[PTIF+0],BF[PTIF+1]).equals("0100")) {
      Width = Byte2IntBig(BF[PTIF+8],BF[PTIF+9]);
    }
    PTIF += 12;
  }
}

PHP

if ($BF[0]==chr(77) && $BF[1]==chr(77) && $BF[2]==chr(0) && $BF[3]==chr(42)) {
  $PTIF = Byte2IntBig(ord($BF[4]),ord($BF[5]),ord($BF[6]),ord($BF[7]));
  $Type = "TIF";
  $NumDirEntries = Byte2IntBig(ord($BF[$PTIF+0]),ord($BF[$PTIF+1]));
  $PTIF += 2;
  for ($i = 0; $i < $NumDirEntries;$i++) {
    if (sprintf("%02X%02X", ord($BF[$PTIF+0]),ord($BF[$PTIF+1]))=="0101") {
      $Height = Byte2IntBig(ord($BF[$PTIF+8]),ord($BF[$PTIF+9]));
    }
    if (sprintf("%02X%02X", ord($BF[$PTIF+0]),ord($BF[$PTIF+1]))=="0100") {
      $Width = Byte2IntBig(ord($BF[$PTIF+8]),ord($BF[$PTIF+9]));
    }
    $PTIF += 12;
  }
}

WMF – D7CDC69A

Java

if (BF[0]==(byte)215 && BF[1]==(byte)205 && BF[2]==(byte)198 && BF[3]==(byte)154) {
  Type = "WMF";
  int L = Byte2IntLit(BF[6],BF[7]);
  int T = Byte2IntLit(BF[8],BF[9]);
  int R = Byte2IntLit(BF[10],BF[11]);
  int B = Byte2IntLit(BF[12],BF[13]);
  Height = B-T;
  Width = R-L;
}

PHP

if ($BF[0]==chr(215) && $BF[1]==chr(205) && $BF[2]==chr(198) && $BF[3]==chr(154)) {
  $Type = "WMF";
  $L = Byte2IntLit(ord($BF[6]),ord($BF[7]));
  $T = Byte2IntLit(ord($BF[8]),ord($BF[9]));
  $R = Byte2IntLit(ord($BF[10]),ord($BF[11]));
  $B = Byte2IntLit(ord($BF[12]),ord($BF[13]));
  $Height = $B-$T;
  $Width = $R-$L;
}

WMF – 01000900, 02000900

Java

if ((BF[0]==(byte)1 || BF[0]==(byte)2) && BF[1]==(byte)0 && BF[2]==(byte)9 &&     BF[3]==(byte)0) {
  int PWMF = 18;
  int SizeR;
  while(PWMF < BF.length) {
    SizeR = Byte2IntLit(BF[PWMF+0],BF[PWMF+1],BF[PWMF+2],BF[PWMF+3]);
    if (String.format("%02X%02X", BF[PWMF+5],BF[PWMF+4]).equals("020C")) {
      Type = "WMF";
      Height = Byte2IntLit(BF[PWMF+6],BF[PWMF+7]);
      Width = Byte2IntLit(BF[PWMF+8],BF[PWMF+9]);
    }
    PWMF += (2*SizeR);
  }
}

PHP

if (($BF[0]==chr(1) || $BF[0]==chr(2)) && $BF[1]==chr(0) && $BF[2]==chr(9) &&     $BF[3]==chr(0)) {
  $PWMF = 18;
  $SizeR;
  while($PWMF < strlen($BF)) {
    $SizeR = Byte2IntLit(ord($BF[$PWMF+0]),ord($BF[$PWMF+1]),         ord($BF[$PWMF+2]),ord($BF[$PWMF+3]));
    if (sprintf("%02X%02X", ord($BF[$PWMF+5]),ord($BF[$PWMF+4]))=="020C") {
      $Type = "WMF";
      $Height = Byte2IntLit(ord($BF[$PWMF+6]),ord($BF[$PWMF+7]));
      $Width = Byte2IntLit(ord($BF[$PWMF+8]),ord($BF[$PWMF+9]));
    }
    $PWMF += (2*$SizeR);
  }
}

Anuncios

Acerca de joseluisbz

Hasta ahora, espero actualizarlo después, ahora no.
Esta entrada fue publicada en Dimension, Image, Size y etiquetada , , , , , , , , , , , , , , , , , . Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s