Sì, è possibile, ma dopo qualche prova non ottengo chissà che risultato.
Non ho ancora capito se l'immagine che ottieni sia sempre simile a quella che hai postato, o cosa possa cambiare tra una e l'altra, comunque conoscendo a priori altezza e larghezza (nel codice sotto uso una BufferedImage per l'immagine originale, ma da sun.awt.image.ToolkitImage dovresti comunque essere in grado di trovare altezza e larghezza, e stando a questo link potresti anche usare il metodo getBufferedImage () sulla tua ToolkitImage, anche se non so se funzioni) dovresti essere in grado di tagliare un ellisse settando la clip dell'oggetto Graphics corrispondente.
Ecco un frammento di codice che ho pescato online e riadattato un pochino (qua si assume che l'immagine sia quadrata, come quella che hai postato, ma è facile generalizzare):
codice:
import java.awt.Graphics2D;
import java.awt.geom.Ellipse2D;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
public class Test
{
public static void main (String [] a) throws Exception {
BufferedImage image = ImageIO.read (new File ("C:/Users/Francesco/Desktop/1.png"));
int width = image.getWidth ();
BufferedImage circleBuffer = new BufferedImage (width, width, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = circleBuffer.createGraphics ();
g2.setClip (new Ellipse2D.Float (0, 0, width, width));
g2.drawImage (image, 0, 0, width, width, null);
JOptionPane.showMessageDialog (null, new ImageIcon (circleBuffer));
}
}
Ottieni questo:
Cattura.JPG