Bufferedimage成圆形

我有一个来自字节数组的缓冲图像。 如何将图像制成圆圈? 作物? 我不想要一个圆圈,我希望原始图像变成圆形并显示

def bufferedImage = imgSvc.convertByteArrayToBufferedImage(crop.image) 

如果bufferedImage是平方的,那么使用以下代码:

 int width = bufferedImage.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(bufferedImage, 0, 0, width, width, null); 

你在circleBuffer获得了一个圆形裁剪图像

您可以使用Graphics类的setClip()方法将图形上下文的绘图区域限制为特定区域。 这样做的缺点是这种裁剪不会消除锯齿。

有一些更高级的技巧可以获得更好看的结果,请参阅以下问题的答案:

绘制图像的一部分(Java)

如何在Java中创建圆角图像

这可以帮助

  g.setClip(new Ellipse2D.Float(x, y, w, h)); g.drawImage(yourBufferedImage, x, y, w, h, null);