Merge branch 'master' into 'master'

[Desktop] update image reader

See merge request core-developers/forge!4618
This commit is contained in:
Anthony Calosa
2021-04-28 17:55:31 +00:00
2 changed files with 12 additions and 14 deletions

View File

@@ -178,6 +178,11 @@
<artifactId>mp3-wav</artifactId> <artifactId>mp3-wav</artifactId>
<version>1.0.3</version> <version>1.0.3</version>
</dependency> </dependency>
<dependency>
<groupId>com.twelvemonkeys.imageio</groupId>
<artifactId>imageio-jpeg</artifactId>
<version>3.7.0</version>
</dependency>
</dependencies> </dependencies>
<profiles> <profiles>

View File

@@ -5,14 +5,13 @@ import java.awt.image.BufferedImage;
import java.awt.image.ColorConvertOp; import java.awt.image.ColorConvertOp;
import java.awt.image.Raster; import java.awt.image.Raster;
import java.io.File; import java.io.File;
import java.util.Iterator;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream; import javax.imageio.stream.ImageInputStream;
import com.google.common.cache.CacheLoader; import com.google.common.cache.CacheLoader;
import com.twelvemonkeys.imageio.ImageReaderBase;
import forge.gui.error.BugReporter; import forge.gui.error.BugReporter;
import forge.localinstance.properties.ForgePreferences; import forge.localinstance.properties.ForgePreferences;
import forge.model.FModel; import forge.model.FModel;
@@ -35,17 +34,9 @@ final class ImageLoader extends CacheLoader<String, BufferedImage> {
try { try {
return ImageIO.read(file); return ImageIO.read(file);
} catch (Exception e) { } catch (Exception e) {
//Use TwelveMonkeys to support JPEG "flavors"
ImageReaderBase reader = null;
try { 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; ImageInputStream input;
input = ImageIO.createImageInputStream(file); input = ImageIO.createImageInputStream(file);
if (input == null) { if (input == null) {
@@ -59,10 +50,12 @@ final class ImageLoader extends CacheLoader<String, BufferedImage> {
BufferedImage bi = new BufferedImage(raster.getWidth(), raster.getHeight(), BufferedImage.TYPE_4BYTE_ABGR); BufferedImage bi = new BufferedImage(raster.getWidth(), raster.getHeight(), BufferedImage.TYPE_4BYTE_ABGR);
//Fill the new image with the old raster //Fill the new image with the old raster
bi.getRaster().setRect(raster); bi.getRaster().setRect(raster);
BufferedImage colorConverted = colorConvert(bi); return colorConvert(bi);
return colorConverted;
} catch (Exception ex) { } catch (Exception ex) {
BugReporter.reportException(ex, "Could not read image file " + file.getAbsolutePath() + " "); BugReporter.reportException(ex, "Could not read image file " + file.getAbsolutePath() + " ");
} finally {
if (reader != null)
reader.dispose();
} }
} }
} }