I need to convert a 32-bit PNG (RGB) to an 8-bit (indexed) version, with as little loss in quality as possible, although some is inevitable and accecptable. I've been able to pull this off by using ColorConvertOp to create a compatible destination image with the appropriate (default) IndexedColorSpace and SampleModel and just painting to it, but the dithering on this was terrible.
What I need to do is create my own palette for the destination image, then create the image itself. In the first part I (think) I've been successful, but I'm getting lost in precisely how to create the destination image and get the right data into it.