private void updateDimensions()

in api/src/main/java/com/google/appengine/api/images/ImageImpl.java [149:201]


  private void updateDimensions() {
    if (imageData == null) {
      throw new UnsupportedOperationException("No image data is available.");
    }
    if (imageData.length < 8) {
      throw new IllegalArgumentException("imageData must be a valid image");
    }
    // Check for magic numbers and send off to the appropriate format function.
    if (imageData[0] == 'G' && imageData[1] == 'I' && imageData[2] == 'F') {
      updateGifDimensions();
      format = Format.GIF;
    } else if (imageData[0] == (byte) 0x89 && imageData[1] == 'P'
               && imageData[2] == 'N' && imageData[3] == 'G'
               && imageData[4] == 0x0d && imageData[5] == 0x0a
               && imageData[6] == 0x1a && imageData[7] == 0x0a) {
      updatePngDimensions();
      format = Format.PNG;
    } else if (imageData[0] == (byte) 0xff && imageData[1] == (byte) 0xd8) {
      updateJpegDimensions();
      format = Format.JPEG;
    } else if ((imageData[0] == 'I' && imageData[1] == 'I'
                && imageData[2] == 0x2a && imageData[3] == 0x00)
               || (imageData[0] == 'M' && imageData[1] == 'M'
                   && imageData[2] == 0x00 && imageData[3] == 0x2a)) {
      updateTiffDimensions();
      format = Format.TIFF;
    } else if (imageData[0] == 'B' && imageData[1] == 'M') {
      updateBmpDimensions();
      format = Format.BMP;
    } else if (imageData[0] == 0x00 && imageData[1] == 0x00
               && imageData[2] == 0x01 && imageData[3] == 0x00) {
      updateIcoDimensions();
      format = Format.ICO;
    } else if (imageData.length > 16
               && imageData[0] == 'R' && imageData[1] == 'I'
               && imageData[2] == 'F' && imageData[3] == 'F'
               && imageData[8] == 'W' && imageData[9] == 'E'
               && imageData[10] == 'B' && imageData[11] == 'P') {
      if (imageData[12] == 'V' && imageData[13] == 'P'
          && imageData[14] == '8' && imageData[15] == ' ') {
        updateWebpDimensions();
        format = Format.WEBP;
      } else if (imageData[12] == 'V' && imageData[13] == 'P'
                 && imageData[14] == '8' && imageData[15] == 'X') {
        updateWebpVp8xDimensions();
        format = Format.WEBP;
      } else {
        throw new IllegalArgumentException("imageData must be a valid image");
      }
    } else {
      throw new IllegalArgumentException("imageData must be a valid image");
    }
  }