Skip to content

Commit 6e908cd

Browse files
committed
Add method for checking image type based on first image bytes.
DEVSIX-1081
1 parent b447044 commit 6e908cd

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

io/src/main/java/com/itextpdf/io/image/ImageDataFactory.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -495,6 +495,25 @@ public static ImageData createRawImage(byte[] bytes) {
495495
return new RawImageData(bytes, ImageType.RAW);
496496
}
497497

498+
/**
499+
* Checks if the type of image (based on first 8 bytes) is supported by factory.
500+
* <br/>
501+
* <br/>
502+
* <b>Note:</b> if this method returns {@code true} it doesn't means that {@link #create(byte[])} won't throw exception
503+
*
504+
* @param source image raw bytes
505+
* @return {@code true} if first eight bytes are recognised by factory as valid image type and {@code false} otherwise
506+
*/
507+
public static boolean isSupportedType(byte[] source) {
508+
byte[] imageType = readImageType(source);
509+
if (imageType == null || imageType.length < 8) {
510+
return false;
511+
}
512+
return imageTypeIs(imageType, gif) || imageTypeIs(imageType, jpeg) || imageTypeIs(imageType, jpeg2000_1)
513+
|| imageTypeIs(imageType, jpeg2000_2) || imageTypeIs(imageType, png) || imageTypeIs(imageType, bmp)
514+
|| imageTypeIs(imageType, tiff_1) || imageTypeIs(imageType, tiff_2) || imageTypeIs(imageType, jbig2);
515+
}
516+
498517
private static ImageData createImageInstance(URL source, boolean recoverImage) {
499518
byte[] imageType = readImageType(source);
500519
if (imageTypeIs(imageType, gif)) {

0 commit comments

Comments
 (0)