在 Kotlin 中处理图像:库与工具

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

在 Kotlin 中处理图像:库概述与实践示例



Kotlin 作为一种与 Java 完全兼容的现代编程语言,为开发者提供了访问整个图像处理库生态系统的能力。在本文中,我们将探讨 Kotlin 中用于加载、处理、转换和保存图像的主要工具。您将了解如何使用标准 Java 功能(AWT、Swing)以及专用库来解决典型任务。



标准 Java AWT 和 Swing 工具



Kotlin(与 Java 一样)中图像处理的基本功能由 java.awt 和 javax.imageio 包提供。主要类包括:



  • java.awt.image.BufferedImage — 表示可访问像素的位图图像。
  • java.awt.Graphics2D — 提供在图像上绘制(线条、形状、文本)的方法。
  • javax.imageio.ImageIO — 用于以各种格式(PNG、JPEG、BMP、GIF)读写图像的静态方法。
  • java.awt.Color — 处理颜色。
  • java.awt.image.RescaleOp、java.awt.image.ConvolveOp — 用于调整亮度、对比度、模糊的滤镜。


示例 1:加载、调整大小并保存图像



import java.awt.image.BufferedImageimport java.awt.Graphics2Dimport java.awt.RenderingHintsimport java.io.Fileimport javax.imageio.ImageIO

fun resizeImage(inputPath: String, outputPath: String, targetWidth: Int, targetHeight: Int) { // 加载原始图像 val originalImage: BufferedImage = ImageIO.read(File(inputPath))

// 创建指定大小的新图像 val resizedImage = BufferedImage(targetWidth, targetHeight, BufferedImage.TYPE_INT_RGB) val graphics: Graphics2D = resizedImage.createGraphics()

// 设置重采样质量 graphics.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR) graphics.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY) graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)

// 绘制缩放后的图像 graphics.drawImage(originalImage, 0, 0, targetWidth, targetHeight, null) graphics.dispose()

// 保存结果 ImageIO.write(resizedImage, "jpg", File(outputPath)) println("图像已保存:$outputPath")}

// 调用示例fun main() { resizeImage("input.jpg", "output_resized.jpg", 800, 600)}


Thumbnailator 库



Thumbnailator 是一个流行的 Java/Kotlin 库,极大地简化了缩略图创建和图像大小调整。其主要优势在于简单的 fluent API。



添加依赖(Gradle):

implementation("net.coobird:thumbnailator:0.4.20")


示例 2:使用 Thumbnailator 创建缩略图



import net.coobird.thumbnailator.Thumbnailsimport java.io.File

fun createThumbnail(inputPath: String, outputPath: String, size: Int) { Thumbnails.of(File(inputPath)) .size(size, size) // 方形缩略图 .keepAspectRatio(true) // 保持宽高比 .outputFormat("png") .toFile(File(outputPath)) println("缩略图已创建:$outputPath")}

fun main() { createThumbnail("photo.jpg", "thumb.png", 150)}


该库还支持裁剪、旋转、添加水印以及处理流。



用于 Kotlin 的 OpenCV 库



对于高级计算机图像处理(人脸识别、滤波、轮廓分析),使用

推荐