文章

Java/Kotlin 图像裁切

Java/Kotlin 图像裁切 | 初雪·冰

今天被朋友委托编写一个图像裁切程式,自动化处理一些聚合图像(如 BitMap Textures)。原本是想套 Python,但是朋友电脑没有 Python,也没有安装的打算。我们都是 Java 玩家,因此我决定以 Java 的方式处理它。

当然,作为 Kotlin 忠实玩家,这里我选用了 Kotlin 作为开发语言。

原本我期望在 Graphics2D 中完成裁切,但是无论我怎么操作,都只能得到一团黑幕。最后使用Param Overload的形式解决了。上代码:

1
2
3
4
5
6
7
8
9
10
11
val fileStream = Files.newInputStream(file.toPath())
val imageStream = ImageIO.createImageInputStream(fileStream)
val reader = ImageIO.getImageReaders(imageStream).next()
reader.setInput(imageStream, true)
val param = reader.defaultReadParam
param.setSourceRegion(Rectangle(baseX, baseY, imageBaseX, imageBaseY))
val outputImage = reader.read(0, param)

ImageIO.write(outputImage, "PNG", File(fileOutput, "$id.png"))
imageStream.close()
fileStream.close()
本文章以 CC BY 4.0 授權