Нет способа взять "изображение из графики", как вы просите, но не очень сложно просто создать BufferedImage и затем вместо этого нарисовать изображение в нем. Во всяком случае, модель обработки изображений AWT довольно сложна, и вам придется создать пару вспомогательных структур данных и прочего, но вот шаблон, который создает 32-битные изображения RGBA:
private static final ComponentColorModel colormodel =
new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB),
new int[] {8, 8, 8, 8}, true, false,
ComponentColorModel.TRANSLUCENT, DataBuffer.TYPE_BYTE);
public static BufferedImage makeimage(int w, int h) {
WritableRaster buf = Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE, w, h, 4, null);
return(new BufferedImage(colormodel, buf, false, null));
}
Когда у вас есть BufferedImage, созданный makeimage()
, просто наберите на нем getGraphics()
и раскрасьте все до глубины души.