Je rencontre des problèmes lors de l'utilisation de classes AWT sous OSX (10.5.8) avec Java 6 (1.6.0_17 JVM: 14.3-b01-101). Si vous essayez de charger java.awt.Dimension, le code se fige, cela se produit dans Eclipse ou depuis la ligne de commande. Quelqu'un rencontre les mêmes problèmes? La classe est utilisée par le code JAI suivant:Problème JNI sous OSX
public static byte[] resizeAsJPG(byte[] imageContent, double scale, float outputQuality) throws IllegalArgumentException,
ImageOperationException {
if (scale <= 0) {
throw new IllegalArgumentException("scale must be a positive number");
}
if (outputQuality <= 0 || outputQuality > 1.0F) {
throw new IllegalArgumentException("outputQuality must be between 0 and 1");
}
try {
// Fetch input image to seekable stream
RenderedOp originalImage = getRenderedOp(imageContent);
((OpImage) originalImage.getRendering()).setTileCache(null);
// Set scale parameters
ParameterBlock saclingParams = new ParameterBlock();
saclingParams.addSource(originalImage); // The source image
saclingParams.add(scale); // The xScale
saclingParams.add(scale); // The yScale
saclingParams.add(0.0); // The x translation
saclingParams.add(0.0); // The y translation
// RenderingHints renderingHints = new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
Map<RenderingHints.Key, Object> renderingHints = new HashMap<RenderingHints.Key, Object>();
renderingHints.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
renderingHints.put(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
renderingHints.put(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
renderingHints.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
// Scale using sub-sampling average which provides much better quality than bicubic interpolation
RenderedOp scaledImage = JAI.create("SubsampleAverage", saclingParams, new RenderingHints(renderingHints));
// Encode scaled image as JPEG
JPEGEncodeParam encodeParam = new JPEGEncodeParam();
encodeParam.setQuality(outputQuality);
// Since we scale height and width (don't take into account the quality)
int outputSizeEstimate = (int) (imageContent.length * scale * scale);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream(outputSizeEstimate);
ImageEncoder encoder = ImageCodec.createImageEncoder("JPEG", outputStream, encodeParam);
encoder.encode(scaledImage);
return outputStream.toByteArray();
} catch (Exception e) {
throw new ImageOperationException(e.getMessage(), e);
}
}
Cela n'a pas aidé – talg