Devo ridimensionare un'immagine con Java JAI. Al tempo, io uso il seguente codice:Ridimensionamento delle immagini con 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);
}
Purtroppo, questo porta a risultati molto male, soprattutto perché spesso devo scalare le immagini con un fattore di scala inferiore a 0,5 ...
Qualsiasi consigli?
Questa linea appare sospettoso scaleParams.add (scala) .add (scala) .add (0.0f) .add (0.0f); – whatnick
Alcuni esempi di risultati per illustrare cosa intendi per cattivo ti aiuteranno anche a identificare il tipo di artefatto che stai riscontrando. – whatnick
Qualsiasi motivo per non usare 'AffineTransformOp'? Vedi anche http://stackoverflow.com/questions/4216635 – trashgod