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");
}
}