1

我有一个来自字节数组的缓冲图像。怎么把图片变成圆形?庄稼?我不想要圆形,我想要原始图像变成圆形并显示

 def bufferedImage = imgSvc.convertByteArrayToBufferedImage(crop.image)
4

3 回答 3

4

如果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

于 2017-02-06T16:57:29.760 回答
1

这可以帮助

    g.setClip(new Ellipse2D.Float(x, y, w, h));
    g.drawImage(yourBufferedImage, x, y, w, h, null);
于 2015-06-09T07:36:32.307 回答
0

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

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

绘制图像的一部分(Java)

如何在Java中制作圆角图像

于 2013-02-06T16:39:47.933 回答