Je dois redimensionner une image avec Java JAI. Au moment maintenant, j'utilise le code suivant:Mise à l'échelle des images avec Java JAI
private static RenderedOp scale(RenderedOp image, float scale) {
ParameterBlock scaleParams = new ParameterBlock();
scaleParams.addSource(image);
scaleParams.add(scale).add(scale).add(0.0f).add(0.0f);
scaleParams.add(Interpolation.getInstance(Interpolation.INTERP_BICUBIC_2));
// Quality related hints when scaling the image
RenderingHints scalingHints = new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
scalingHints.put(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
scalingHints.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
scalingHints.put(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
scalingHints.put(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE);
scalingHints.put(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);
scalingHints.put(JAI.KEY_BORDER_EXTENDER, BorderExtender.createInstance(BorderExtender.BORDER_COPY));
return JAI.create("scale", scaleParams, scalingHints);
}
Malheureusement, cela conduit à des résultats très mauvais, surtout parce que j'ai souvent à l'échelle des images avec un facteur d'échelle inférieure à 0,5 ...
Tous Conseil?
Cette ligne semble scaleParams.add suspect (échelle) .add (échelle) .add (0.0f) .add (0.0f); – whatnick
Quelques exemples de résultats pour illustrer ce que vous entendez par mauvais aidera également à identifier le type d'artefact que vous rencontrez. – whatnick
Une raison de ne pas utiliser AffineTransformOp? Voir aussi http://stackoverflow.com/questions/4216635 – trashgod