首页 > 解决方案 > 将图像文件转换为负片

问题描述

我想根据以下命令行输入获得特定图像的负片。

-in xyz.png -out xyz_negative.png

加载的文件存储在特定文件夹中。

这是我到目前为止/正在尝试做的事情。

  1. 读取 png 文件
  2. 计算每个像素的 RGB 值
  3. 计算负 RGB 值
  4. 为 png 文件设置新的 RGB 值以获得负值

我有点卡在最后一步,因为新的 .png 不是负面的。这是我的代码,如果有人可以帮助我或指出我正确的方向,我将非常感激。

import java.awt.Color
import java.io.File
import javax.imageio.ImageIO

fun main(args: Array<String>) {

    if (args.isNotEmpty()) {
        val myFile = File(
                "/Users/xyz/IdeaProjects/Seam Carving/Seam Carving/task/${args[1]}")
        val importedImage = ImageIO.read(myFile)
        for (x in 0 until importedImage.width) {
            for (y in 0 until importedImage.height) {
                val pixel = importedImage.getRGB(x, y)
                var color = Color(pixel, true)
                val redNegative = 255 - color.red
                val greenNegative = 255 - color.green
                val blueNegative = 255 - color.blue
                color = Color(redNegative, blueNegative, greenNegative)
                importedImage.setRGB(x, y, color.rgb)
            }
        }
        ImageIO.write(importedImage, "png", File("/Users/xyz/IdeaProjects/Seam Carving/Seam Carving/task/${args[3]}"))
    }
}

它应该是什么样子:

我的图像是什么样的

标签: kotlin

解决方案


推荐阅读