使用 Java 和 JAI 对图像进行圆角处理

发布于 2024-08-13 06:16:57 字数 363 浏览 8 评论 0 原文

我们正在使用 JAI (https://jai-imageio.dev.java.net/) 在 Java 中缩放和裁剪图像。我们想在图像上创建圆角。我们该怎么做呢?

图像为 JPG 和 PNG。我认为使用 JPG 来完成此操作会更容易吗?

该图像是来自 JAI 的 PlanarImage

PlanarImage src = JAI.create(...,...);

,可以转换为 java.awt.Graphics 对象

以前有人这样做过吗?

We're using JAI (https://jai-imageio.dev.java.net/) to scale and crop images in Java. We would like to create round corners on our images. How do we do that?

The images are JPG and PNG. I would think it's easier to do this with JPGs?

The image is a PlanarImage from JAI

PlanarImage src = JAI.create(...,...);

which can be transformed to a java.awt.Graphics object

Has anyone done this before?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

硬不硬你别怂 2024-08-20 06:16:57

PNG 支持透明 Alpha 通道,但 JPG 不支持。因此,对于 JPG,您还必须选择一种颜色来绘制圆角矩形的“不可见”部分。

有一个类 java.awt.geom.RoundRectangle2D 可以用来执行此操作:

public void paint(Graphics g) {
    Graphics2D g2d = (Graphics2D) g;
    RoundRectangle2D rr = new RoundRectangle2D.Float(50, 50, 200, 100, 10, 10);
    g2d.draw(rr);
}

RoundRectangle2D 类的 Float() 方法有六个参数:

  • 前两个表示左上角的位置。
  • 参数 3 和 4 表示圆角矩形的宽度和高度。
  • 最后两个参数表示在中绘制的圆弧的宽度和高度
    角落。

因此,绘制一个圆角矩形,其中仅包含您想要圆角的图像,然后覆盖或使用蒙版以获得所需的效果。

PNG supports a transparent alpha channel, but JPG does not. So, for JPG you would have to also pick a color to paint the "invisible" part of the rectangle for the rounded corners.

There is a class java.awt.geom.RoundRectangle2D available to do this:

public void paint(Graphics g) {
    Graphics2D g2d = (Graphics2D) g;
    RoundRectangle2D rr = new RoundRectangle2D.Float(50, 50, 200, 100, 10, 10);
    g2d.draw(rr);
}

The Float() method of the class RoundRectangle2D takes six arguments:

  • The first two represent the location of the upper left corner.
  • Arguments 3 and 4 represent the width and height of the rounded rectangle.
  • The last two arguments represent the width and height of the arc drawn in the
    corners.

So, draw a rounded rectangle that will just contain the image you want to have rounded corners and then either overlay or use a mask to get the desired effect.

夜无邪 2024-08-20 06:16:57

是什么阻止您在从 Image 获得的 Graphics 对象上绘制您喜欢的任何角?我不太确定你的“圆角”应该是什么样子,但你可以在 Graphics 对象上执行所有合理的绘制操作。

What prevents you from drawing whatever corners you like onto the Graphics object obtained from the Image? I'm not really sure what your "round corners" are supposed to look like, but you can perform all reasonable paint operations on the Graphics object.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文