mirror of
https://github.com/haraldk/TwelveMonkeys.git
synced 2025-08-04 20:15:28 -04:00
Merge pull request #32 from rtimpe/master
Support registration of JPEG plugins when the classloader can't find sun plugins
This commit is contained in:
commit
7c012323e5
@ -0,0 +1,36 @@
|
|||||||
|
package com.twelvemonkeys.imageio.plugins.jpeg;
|
||||||
|
|
||||||
|
import javax.imageio.spi.ImageReaderSpi;
|
||||||
|
import javax.imageio.spi.ImageWriterSpi;
|
||||||
|
import javax.imageio.spi.ServiceRegistry;
|
||||||
|
|
||||||
|
public class ImageFormatFilter implements ServiceRegistry.Filter {
|
||||||
|
String name;
|
||||||
|
|
||||||
|
public ImageFormatFilter (String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean filter (Object obj) {
|
||||||
|
try {
|
||||||
|
if (obj instanceof ImageReaderSpi) {
|
||||||
|
return contains(((ImageReaderSpi) obj).getFormatNames(), name);
|
||||||
|
} else if (obj instanceof ImageWriterSpi) {
|
||||||
|
return contains(((ImageWriterSpi) obj).getFormatNames(), name);
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean contains (String[] names, String name) {
|
||||||
|
for (int i = 0; i < names.length; i++) {
|
||||||
|
if (name.equalsIgnoreCase(names[i])) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
@ -38,6 +38,7 @@ import javax.imageio.spi.ImageReaderSpi;
|
|||||||
import javax.imageio.spi.ServiceRegistry;
|
import javax.imageio.spi.ServiceRegistry;
|
||||||
import javax.imageio.stream.ImageInputStream;
|
import javax.imageio.stream.ImageInputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -85,14 +86,13 @@ public class JPEGImageReaderSpi extends ImageReaderSpi {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static ImageReaderSpi lookupDelegateProvider(final ServiceRegistry registry) {
|
static ImageReaderSpi lookupDelegateProvider(final ServiceRegistry registry) {
|
||||||
// Should be safe to lookup now, as the bundled providers are hardcoded usually
|
Iterator<ImageReaderSpi> it = registry.getServiceProviders(ImageReaderSpi.class, new ImageFormatFilter("JPEG"), true);
|
||||||
try {
|
|
||||||
return (ImageReaderSpi) registry.getServiceProviderByClass(Class.forName("com.sun.imageio.plugins.jpeg.JPEGImageReaderSpi"));
|
while (it.hasNext()) {
|
||||||
|
ImageReaderSpi imageReaderSpi = it.next();
|
||||||
|
if (imageReaderSpi.getClass().getCanonicalName().equals("com.sun.imageio.plugins.jpeg.JPEGImageReaderSpi")) {
|
||||||
|
return imageReaderSpi;
|
||||||
}
|
}
|
||||||
catch (ClassNotFoundException ignore) {
|
|
||||||
}
|
|
||||||
catch (SecurityException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
@ -39,6 +39,7 @@ import javax.imageio.spi.ImageWriterSpi;
|
|||||||
import javax.imageio.spi.ServiceRegistry;
|
import javax.imageio.spi.ServiceRegistry;
|
||||||
import java.awt.image.RenderedImage;
|
import java.awt.image.RenderedImage;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -86,14 +87,13 @@ public class JPEGImageWriterSpi extends ImageWriterSpi {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static ImageWriterSpi lookupDelegateProvider(final ServiceRegistry registry) {
|
static ImageWriterSpi lookupDelegateProvider(final ServiceRegistry registry) {
|
||||||
// Should be safe to lookup now, as the bundled providers are hardcoded usually
|
Iterator<ImageWriterSpi> it = registry.getServiceProviders(ImageWriterSpi.class, new ImageFormatFilter("JPEG"), true);
|
||||||
try {
|
|
||||||
return (ImageWriterSpi) registry.getServiceProviderByClass(Class.forName("com.sun.imageio.plugins.jpeg.JPEGImageWriterSpi"));
|
while (it.hasNext()) {
|
||||||
|
ImageWriterSpi imageWriterSpi = it.next();
|
||||||
|
if (imageWriterSpi.getClass().getCanonicalName().equals("com.sun.imageio.plugins.jpeg.JPEGImageWriterSpi")) {
|
||||||
|
return imageWriterSpi;
|
||||||
}
|
}
|
||||||
catch (ClassNotFoundException ignore) {
|
|
||||||
}
|
|
||||||
catch (SecurityException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user