I am encountering a very bizarre problem while trying to scale a 16-bit
UShort image using the AffineTransformOp class. Basically what happens
is that, if I create a compatible destination image with the
createCompatibleDestImage() method, when I actually call the filter
method the resulting image has its pixels messed up. However, if I leave
it to the filter method (by setting the second arg to null), the pixels
*look* good, but they are RGB and therefore unusable for any further image
processing (at least to me). For some reason the latter method produces a
TYPE_INT_ARGB image. Can anyone help me understand this?
Here's the code (where img is being passed in):
double factor = 0.25;
AffineTransform at = new AffineTransform();
AffineTransformOp op = new AffineTransformOp(at,AffineTransformOp.TYPE_BILINEAR);
BufferedImage retval = op.createCompatibleDestImage(img, img.getColorModel());
//this one will produce an image of the correct type, but broken
BufferedImage result = op.filter(imgs, retval );
//this one will produce an image that looks good but is of the wrong type:
BufferedImage result2 = op.filter(img, retval );
The relevant aspects of the source image are (dumped from the debugger):
colorModel= java.awt.image.ComponentColorModel (id=46)
raster= sun.awt.image.ShortInterleavedRaster (id=61)
dataBuffer= java.awt.image.DataBufferUShort (id=64)
height= 2457 width= 2048 numBands= 1
sampleModel= java.awt.image.PixelInterleavedSampleModel (id=67)
dataType= 1 numBands= 1 numBanks= 1 pixelStride= 1 scanlineStride=
Thanks in advance for your help.
P.S. I can't use JAI.
unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA2D-INTEREST". For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".