2010-09-13 89 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