有 Java 编程相关的问题?

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

图像处理如何在Java中实现“Duotone”效果

有没有办法在Java中实现“Duotone”效果

我想做的一个很好的例子是herehere

我想Bandeop可能会有帮助。 对我来说,我应该先将其转换为灰色,然后应用smth样的阈值效果。 但我没能取得好的产出

我也不明白如何设置这种效果的颜色

float[][] grayMatrix = new float[][]
            {
               new float[] {0.3f, 0.3f, 0.3f},
               new float[] {0.3f, 0.3f, 0.3f},
               new float[] {0.3f, 0.3f, 0.3f},
            };

    float[][] duoToneMatrix = new float[][]
            {
                    new float[] {0.1f, 0.1f, 0.1f},
                    new float[] {0.2f, 0.2f, 0.2f},
                    new float[] {0.1f, 0.1f, 0.1f},
            };

    BufferedImage src = ImageIO.read(new File("X:\\photoshop_image_effects.jpg"));
    WritableRaster srcRaster = src.getRaster();

    // make it gray
    BandCombineOp bco = new BandCombineOp(grayMatrix, null);
    WritableRaster dstRaster = bco.createCompatibleDestRaster(srcRaster);
    bco.filter(srcRaster, dstRaster);

    // apply duotone
    BandCombineOp duoToneBco = new BandCombineOp(duoToneMatrix, null);
    WritableRaster dstRaster2 = bco.createCompatibleDestRaster(dstRaster);
    duoToneBco.filter(dstRaster, dstRaster2);

    BufferedImage result = new BufferedImage(src.getColorModel(), dstRaster2, src.getColorModel().isAlphaPremultiplied(), null);
    ImageIO.write(result, "png", new File("X:\\result_duotone.png"));

我的输出enter image description here


共 (0) 个答案