diff --git a/forge-gui-desktop/pom.xml b/forge-gui-desktop/pom.xml
index 22994326bd5..a3c2a3cc582 100644
--- a/forge-gui-desktop/pom.xml
+++ b/forge-gui-desktop/pom.xml
@@ -178,6 +178,11 @@
mp3-wav
1.0.3
+
+ com.twelvemonkeys.imageio
+ imageio-jpeg
+ 3.7.0
+
diff --git a/forge-gui-desktop/src/main/java/forge/ImageLoader.java b/forge-gui-desktop/src/main/java/forge/ImageLoader.java
index 3f60cee722c..148d10bba1a 100644
--- a/forge-gui-desktop/src/main/java/forge/ImageLoader.java
+++ b/forge-gui-desktop/src/main/java/forge/ImageLoader.java
@@ -5,14 +5,13 @@ import java.awt.image.BufferedImage;
import java.awt.image.ColorConvertOp;
import java.awt.image.Raster;
import java.io.File;
-import java.util.Iterator;
import javax.imageio.ImageIO;
-import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;
import com.google.common.cache.CacheLoader;
+import com.twelvemonkeys.imageio.ImageReaderBase;
import forge.gui.error.BugReporter;
import forge.localinstance.properties.ForgePreferences;
import forge.model.FModel;
@@ -35,17 +34,9 @@ final class ImageLoader extends CacheLoader {
try {
return ImageIO.read(file);
} catch (Exception e) {
+ //Use TwelveMonkeys to support JPEG "flavors"
+ ImageReaderBase reader = null;
try {
- //Find a suitable ImageReader
- Iterator readers = ImageIO.getImageReadersByFormatName("JPEG");
- ImageReader reader = null;
- while (readers.hasNext()) {
- reader = (ImageReader) readers.next();
- if (reader.canReadRaster()) {
- break;
- }
- }
- //Stream the image file (the original CMYK image)
ImageInputStream input;
input = ImageIO.createImageInputStream(file);
if (input == null) {
@@ -59,10 +50,12 @@ final class ImageLoader extends CacheLoader {
BufferedImage bi = new BufferedImage(raster.getWidth(), raster.getHeight(), BufferedImage.TYPE_4BYTE_ABGR);
//Fill the new image with the old raster
bi.getRaster().setRect(raster);
- BufferedImage colorConverted = colorConvert(bi);
- return colorConverted;
+ return colorConvert(bi);
} catch (Exception ex) {
BugReporter.reportException(ex, "Could not read image file " + file.getAbsolutePath() + " ");
+ } finally {
+ if (reader != null)
+ reader.dispose();
}
}
}