22
22
23
23
package com .adobe .epubcheck .bitmap ;
24
24
25
- import java .awt .image .BufferedImage ;
26
25
import java .io .File ;
27
26
import java .io .FileOutputStream ;
28
27
import java .io .IOException ;
31
30
32
31
import javax .imageio .ImageIO ;
33
32
import javax .imageio .ImageReader ;
33
+ import javax .imageio .stream .FileImageInputStream ;
34
34
import javax .imageio .stream .ImageInputStream ;
35
35
36
36
import com .adobe .epubcheck .api .EPUBLocation ;
@@ -119,6 +119,7 @@ public ImageHeuristics getImageSizes(String imgFileName) throws
119
119
tempFile = getImageFile (ocf , imgFileName );
120
120
String formatFromInputStream = null ;
121
121
String formatFromSuffix = null ;
122
+ ImageReader reader = null ;
122
123
ImageInputStream imageInputStream = ImageIO .createImageInputStream (tempFile );
123
124
Iterator <ImageReader > imageReaderIteratorFromInputStream = ImageIO .getImageReaders (imageInputStream );
124
125
while (imageReaderIteratorFromInputStream .hasNext ()) {
@@ -127,7 +128,7 @@ public ImageHeuristics getImageSizes(String imgFileName) throws
127
128
128
129
Iterator <ImageReader > imageReaderIteratorFromSuffix = ImageIO .getImageReadersBySuffix (suffix );
129
130
while (imageReaderIteratorFromSuffix .hasNext ()) {
130
- ImageReader reader = imageReaderIteratorFromSuffix .next ();
131
+ reader = imageReaderIteratorFromSuffix .next ();
131
132
formatFromSuffix = reader .getFormatName ();
132
133
133
134
if (formatFromSuffix != null && formatFromSuffix .equals (formatFromInputStream )) break ;
@@ -138,20 +139,14 @@ public ImageHeuristics getImageSizes(String imgFileName) throws
138
139
139
140
140
141
141
- if (formatFromSuffix != null && formatFromSuffix .equals (formatFromInputStream )) {
142
+ if (formatFromSuffix != null && formatFromSuffix .equals (formatFromInputStream )) {
142
143
// file format and file extension matches; read image file
143
-
144
- try {
145
- BufferedImage image = ImageIO .read (tempFile );
146
- if (image == null ) {
147
- report .message (MessageId .PKG_021 , EPUBLocation .create (imgFileName ));
148
- return null ;
149
-
150
- } else {
151
- int width = image .getWidth ();
152
- int height = image .getHeight ();
153
- return new ImageHeuristics (width , height , tempFile .length ());
154
- }
144
+
145
+ try (ImageInputStream stream = new FileImageInputStream (tempFile )) {
146
+ reader .setInput (stream );
147
+ int width = reader .getWidth (reader .getMinIndex ());
148
+ int height = reader .getHeight (reader .getMinIndex ());
149
+ return new ImageHeuristics (width , height , tempFile .length ());
155
150
}
156
151
catch (IOException e )
157
152
{
0 commit comments