位图图像是现代图形的核心部分。这些图像用于网站、移动设备和桌面应用程序。像 BMPGIFPNGJPEG 这样的格式都是基于位图的。在本文中,您将学习如何在 Java 中创建、加载、填充和绘制位图。

Java 图像绘制 SDK 用于处理位图

在本文中,我们将使用 Aspose.Drawing for Java 在 Java 中创建和绘制位图。这是一个支持在各个平台上绘制形状、文本和图像的 2D 图形 API。您可以轻松加载和保存各种格式。

您可以从 releases 下载库,并将 JAR 添加到您的项目中,或通过 Maven 安装。

<dependency>
  <groupId>com.aspose</groupId>
  <artifactId>aspose-drawing</artifactId>
  <version>25.6</version> <!-- Replace with latest version -->
</dependency>

1. 在Java中创建一个新的位图

要从头创建位图,请按照以下步骤操作:

  1. 创建一个具有特定宽度和高度的新 bitmap
  2. 从位图创建 Graphics 类对象。
  3. 初始化一个 Pen 类对象,具有特定的厚度和颜色。
  4. 在位图上用笔画一个椭圆。
  5. 将位图保存为 PNG 图像文件。

以下代码示例演示了如何在 Java 中创建一个新的位图。

// 创建一个宽度和高度为800像素的新位图
Bitmap bitmap = new Bitmap(800, 800);

// 从位图创建图形对象以启用绘图
Graphics graphics = Graphics.fromImage(bitmap);

// 用5像素的粗细初始化一支红色钢笔
Pen pen = new Pen(Color.getRed(), 5);

// 使用笔在 (0, 0) 处绘制一个宽度和高度为 700 像素的椭圆。
graphics.drawEllipse(pen, 0, 0, 700, 700);

// 将最终位图保存为 PNG 图像文件
bitmap.save("output.png");
在Java中创建一个新的位图

在Java中创建一个新的位图

2. 从内存流创建位图

要从内存流创建位图,请按照以下步骤操作:

  1. 打开一个输入流以读取现有的图像文件。
  2. 从输入流创建位图。
  3. 将位图保存到新的图像文件中。

以下代码示例演示了如何在 Java 中使用输入流创建位图。

// 打开一个文件输入流以读取现有图像
InputStream stream = new FileInputStream("input.png");

// 从输入流创建位图
Bitmap bitmap = new Bitmap(stream);

// 将位图保存为新的 PNG 文件
bitmap.save("output.png", ImageFormat.getPng().d());

3. 将位图保存到文件

您可以将位图图像保存到支持的多种格式的文件中。只需在调用 save() 方法时指定文件路径和所需的图像格式。这使您可以将位图导出为 PNG、JPEG、BMP、GIF 等。

您可以通过更改图像格式将位图保存为不同的格式:

  • 将位图保存为 BMP 文件
bitmap.save("output.bmp", ImageFormat.getBmp().d());
  • 将位图保存为 PNG 文件
bitmap.save("output.png", ImageFormat.getPng().d());
  • 将位图保存为 JPG 文件
bitmap.save("output.jpg", ImageFormat.getJpeg().d());
  • 将位图保存为 GIF 文件
bitmap.save("output.gif", ImageFormat.getGif().d());

4. 在位图上绘制图形

您可以使用 Aspose.Drawing for Java 提供的 Graphics 类在位图上绘制各种形状。它允许您创建自定义图形,并完全控制线条、曲线、矩形、椭圆等。

以下代码示例演示了如何在 Java 中的位图上绘制形状。

// 创建一个宽度和高度为500像素的新位图
Bitmap bitmap = new Bitmap(500, 500);

// 创建一个图形对象以在位图上绘制
Graphics graphics = Graphics.fromImage(bitmap);

// 使用 2 像素粗细的蓝色钢笔进行初始化
Pen pen = new Pen(Color.getBlue(), 2);

// 画一个从 (10, 10) 开始,宽度为 100,高度为 50 的矩形
graphics.drawRectangle(pen, 10, 10, 100, 50);

// 在 (10, 130) 处绘制一个宽度为 280 和高度为 280 的椭圆。
graphics.drawEllipse(pen, 10, 130, 280, 280);

// 将最终的位图图像保存为 PNG 文件
bitmap.save("draw_shapes.png");
在 Java 中的位图上绘制形状

在Java中在位图上绘制形状

您可以使用 Aspose.Drawing for Java 中 Graphics 类提供的内置绘图方法在位图上绘制各种形状。以下是支持的形状类型及相应的方法:

  • Arc: 使用 drawArc() 方法绘制一个弧。
  • 贝塞尔曲线:使用 drawBezier() 方法绘制单个贝塞尔曲线。
  • 多个贝塞尔曲线:使用 drawBeziers() 方法绘制一系列贝塞尔样条曲线。
  • 曲线:使用 drawCurve() 方法创建平滑的曲线形状。
  • 闭合曲线:使用 drawClosedCurve() 方法绘制闭合样条。
  • 椭圆:使用 drawEllipse() 方法绘制椭圆形状。
  • 线:使用 drawLine() 方法绘制直线。
  • 多条线:使用 drawLines() 方法绘制一系列连接的线。
  • 路径:使用 drawPath() 方法通过 GraphicsPath 渲染复杂形状。
  • 饼图:使用 drawPie() 方法绘制饼图切片形状。
  • 多边形:使用 drawPolygon() 方法通过连接点来创建一个多边形。
  • 矩形:使用 drawRectangle() 方法绘制一个矩形。
  • 多个矩形:使用 drawRectangles() 方法一次性绘制多个矩形。

除了形状,您还可以在位图上绘制图像:

  • 图标:使用 drawIcon() 方法在特定矩形内绘制图标。
  • 图像:使用 drawImage() 方法将另一幅图像绘制到位图上。

这些绘图方法使得可以通过编程轻松创建自定义图形、图表或注释图像。

5. 在位图上绘制文本

在位图上绘制文本,请按照以下步骤操作:

  1. 创建一个具有定义宽度和高度的新位图。
  2. 从位图创建一个图形对象。
  3. 用浅灰色背景清除位图。
  4. 定义一个具有所需名称和大小的字体。
  5. 创建一个实心的黑色画笔。
  6. 在位图上使用指定的字体和画笔绘制文本字符串。
  7. 将位图保存为 PNG 图像文件。

以下代码示例演示了如何在Java中在位图上绘制文本。

// 如何使用 Aspose.Drawing 在 Java 的位图上绘制文本
// 创建一个尺寸为 500x200 像素的新位图
Bitmap bitmap = new Bitmap(500, 200);

// 创建一个图形对象以在位图上绘制
Graphics graphics = Graphics.fromImage(bitmap);

// 用浅灰色背景填充整个位图
graphics.clear(Color.getLightGray());

// 定义一个字体,名称为\"Arial\",大小为24
Font font = new Font("Arial", 24);

// 创建一个实心黑色画笔用于绘制文本
Brush brush = new SolidBrush(Color.getBlack());

// 在位于 (20, 80) 的位图上绘制字符串
graphics.drawString("Welcome to Bitmap!", font, brush, 20, 80);

// 将最终图像与文本另存为 PNG 文件
bitmap.save("output.png");
Java 在位图上绘制文本

Java 在位图上绘制文本

6. 用单一颜色填充位图

您可以通过以下步骤用单色填充图像的一部分:

  1. 创建一个具有所需宽度和高度的新位图。
  2. 从位图创建一个图形对象。
  3. 创建一个填充用的纯灰色画刷。
  4. 用填充矩形填充整个位图区域为灰色。
  5. 将位图保存为 PNG 图像文件。

以下代码示例显示了如何在Java中使用矩形填充位图以单一颜色。

// 创建一个新位图,尺寸为500x500像素
Bitmap bitmap = new Bitmap(500, 500);

// 创建一个图形对象以在位图上绘制
Graphics graphics = Graphics.fromImage(bitmap);

// 创建一个实心灰色画笔用于填充
SolidBrush brush = new SolidBrush(Color.getGray());

// 用灰色填充整个位图区域
graphics.fillRectangle(brush, 0, 0, bitmap.getWidth(), bitmap.getHeight());

// 将填充的位图保存为 PNG 图像文件
bitmap.save("output.png");
在位图上绘制Java并填充矩形

在位图上绘制矩形并填充颜色的 Java 代码

7. 将图像加载到位图中

您还可以按照以下方式将图像文件加载到 Bitmap 对象中:

  1. 创建一个具有所需大小的新空位图。
  2. 将现有图像加载到位图对象中。
  3. 从空白位图创建图形对象。
  4. 将加载的图像绘制到左上角的空白位图上。
  5. 将最终位图另存为 PNG 图像文件。

以下代码示例演示了如何使用 Java 加载图像到位图中。

// 创建一个新的空白位图,尺寸为 500x500 像素
Bitmap bitmap = new Bitmap(500, 500);

// 从文件加载现有图像到位图对象中
Bitmap loaded = new Bitmap("C:\\Files\\Drawings\\sample.jpg");

// 创建一个图形对象以在空白位图上绘制
Graphics graphics = Graphics.fromImage(bitmap);

// 将加载的图像绘制到空白位图的 (0, 0) 位置
graphics.drawImage(loaded, 0, 0);

// 将最终的位图保存为新的 PNG 文件
bitmap.save("output.png");
使用 Java 将图像加载到位图中

使用Java加载一个位图图像

8. 调整现有图像的大小

调整位图图像大小:

  1. 将原始图像加载到位图对象中。
  2. 创建一个新的位图,其宽度和高度为原始图像的一半。
  3. 将调整大小的位图保存为 PNG 图像文件。

以下代码示例展示了如何调整现有图像的大小并将其保存为新的位图,使用 Java。

// 将原始图像从文件加载到位图对象中
Bitmap original = new Bitmap("C:\\Files\\Drawings\\sample.jpg");

// 创建一个新的位图,其宽度和高度均为原始大小的50%
Bitmap resized = new Bitmap(original, new Size((int)(original.getWidth() * 0.5), (int)(original.getHeight() * 0.5)));

// 将调整大小的位图保存为新的 PNG 图像文件
resized.save("output.png");
如何在 Java 中使用位图调整图像大小

使用 Java 调整现有图像的大小

试用 Aspose.Drawing 免费版

您可以获得一个 免费临时许可证 以无限制地探索 Aspose.Drawing。

在Java中创建位图:免费资源

如果您想进一步了解在Java中使用位图的工作,请浏览以下免费资源以加深您的理解并提升您的生产力:

结论

在本教程中,您学习了如何使用 Aspose.Drawing for Java 创建和处理位图。我们讨论了如何从头生成位图、加载和调整现有图像的大小、绘制形状和文本、用纯色填充区域,以及以多种格式(如 PNG、JPG、BMP 和 GIF)保存图像。凭借这些功能,您可以轻松地将自定义图形和图像处理添加到您的 Java 应用程序中。

Aspose.Drawing for Java 使得以编程方式处理 2D 图形变得容易。访问 官方文档 以了解更多信息。

另请参见