【问题标题】:Bufferedimage into circle shape缓冲图像成圆形
【发布时间】:2013-01-21 19:29:43
【问题描述】:

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

 def bufferedImage = imgSvc.convertByteArrayToBufferedImage(crop.image)

【问题讨论】:

  • 我不会将此作为答案发布,因为它可能不是最好的解决方案,但使用半径作为毕达哥拉斯的测量值并将像素图像复制到另一个图像中半径可以工作,它可能是草率的。您必须使用 BufferedType.TYPE_ARGB。当然要包括透明度的 alpha。

标签: java grails image-processing image-manipulation


【解决方案1】:

如果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 中获得一个圆形裁剪图像

【讨论】:

  • 裁剪区域没有抗锯齿:cry:
【解决方案2】:

这会有所帮助

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

【讨论】:

    【解决方案3】:

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

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

    Drawing a part of an image (Java)

    How to make a rounded corner image in Java

    【讨论】:

      猜你喜欢
      • 2014-08-30
      • 1970-01-01
      • 1970-01-01
      • 2018-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多