java中bmp的整数像素数组

java中bmp的整数像素数组,java,pixel,bmp,Java,Pixel,Bmp,如何从包含像素的int数组(从pixelGrabber类的getPixel()中)在java中创建新的bmp图像 谢谢制作一个BuffereImage并调用setPixel BuffereImage: 如果您想要BMP文件,那么可以使用ImageIO.write(buffereImage,“BMP”,新文件(“mybmp.BMP”) 我会给你ImageIO类的链接,但堆栈溢出阻止了我的垃圾邮件。在Kotlin: // As it happens default color model h

如何从包含像素的int数组(从pixelGrabber类的getPixel()中)在java中创建新的bmp图像


谢谢

制作一个BuffereImage并调用setPixel

BuffereImage:

如果您想要BMP文件,那么可以使用ImageIO.write(buffereImage,“BMP”,新文件(“mybmp.BMP”)

我会给你ImageIO类的链接,但堆栈溢出阻止了我的垃圾邮件。

在Kotlin:

    // As it happens default color model has AARRGGBB format
    // in other words alpha + RBG
    val colorModel = ColorModel.getRGBdefault()

    val raster = colorModel.createCompatibleWritableRaster(
            horizontalRes, verticalRes)

    val bufferedImage = BufferedImage(
            colorModel, raster, colorModel.isAlphaPremultiplied, null)

    // rawArgbData = array of int's.
    // every int has format = 0xFF|R|G|B (MSB is alpha)
    raster.setDataElements(
            0, 0, horizontalRes, verticalRes,
            rawArgbData)


   // finally save
   ImageIO.write(bufferedImage, "PNG", File(filePath))

以ARGB格式保存位图可能有问题,请参见:

OP搜索Java解决方案。虽然Kotlin确实被转换为与JVM兼容的字节码,但其源代码肯定与Java编译器不兼容,例如OP pobably只能使用该思想,而不能使用代码本身。@在提供的示例中,Java和Kotlin之间的差异很小,只需将
val
更改为完整的类型名称,并在此处或此处添加
new
,您将获得编译java解决方案。无论如何,我为自己添加了这个答案,因为这是我在谷歌搜索“将int数组保存到bmp”时弹出的第一个问题。我添加了我的代码,它与OP问题无关,但可能会节省一些人几个小时的研究。。。