有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (1) 个答案

  1. # 1 楼答案

    • 阅读原始图像
    • 使用新光栅和新颜色模型创建新图像:
      • 一种光栅,它包裹图像的原始数据缓冲区,只是解释方式不同(使用colormodel)
      • 一种颜色模型,每四个字节中取第一个字节,并将其解释为强度

    原始光栅需要是字节交错光栅,每个像素有四个字节。本例中未进行安全检查

    BufferedImage orig = ImageIO.read(new File("temp.png"));
    
    DataBuffer dataBuffer = orig.getRaster().getDataBuffer();
    ColorSpace cs         = ColorSpace.getInstance(ColorSpace.CS_GRAY);
    int[]      nBits      = {8};
    int[]      bOffs      = {0};
    ColorModel colorModel = new ComponentColorModel(cs, nBits, false, false,
                                                    Transparency.TRANSLUCENT,
                                                    DataBuffer.TYPE_BYTE);
    WritableRaster raster = Raster.createInterleavedRaster(dataBuffer,
                                                           orig.getWidth(), orig.getHeight(),
                                                           orig.getWidth() * 4, 4,
                                                           bOffs, null);
    
    BufferedImage mask = new BufferedImage(colorModel, raster, false, null);