2010-09-13 58 views

回答

-1

在科特林:

// 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格式保存位图的问题,看到这一点:ImageIO.write bmp does not work

+0

OP搜索一个** ** Java的解决方案。虽然** Kotlin **确实转换为* JVM *兼容* Bytecode *其源代码当然与* Java编译器不兼容*这种OP可能只能使用这个想法,而不是代码本身。 – Zabuza 2017-07-22 12:12:30

+0

@Zabuza在提供的示例中,Java和Kotlin之间的差异很小,只需将'val'更改为完整类型名称并在这里和那里添加'new',就可以编译java解决方案。无论如何,我为*自己*添加了这个答案,因为这是第一个弹出的问题,当我将其保存为“保存int数组到bmp”时。我添加了我的代码,它与OP问题无关,但可能为某人节省几个小时的研究时间...... – csharpfolk 2017-07-22 13:11:38