Java中的渐变颜色查找

时间:2010-12-12 20:35:58

标签: java image-processing gradients

我有一个0-1的值列表。我想通过使用将这些浮点值转换为RGB值的渐变将此列表转换为图像。 Java中是否有任何工具可以为您提供此功能?

3 个答案:

答案 0 :(得分:0)

0应映射0
1应该映射255

请记住,你需要其中3个来制作颜色

将浮点数乘以255并将其转换为int。

答案 1 :(得分:0)

也许GradientPaint可以做你想做的事。目前还不清楚如何将浮点值列表转换为渐变。通常,渐变由两种颜色和一些在这些颜色之间插值的机制组成。 GradientPaint实现了线性渐变。

答案 2 :(得分:0)

假设您有一个由6400​​0三元组组成的数组,对应于RGB值,如下所示:

    final Random rand = new Random();
    final float[] f = new float[320*200*3];
    for (int i = 0; i < f.length; i++) {
        f[i] = rand.nextFloat(); // <-- generates a float between [0...1.0[
    }

并说你有一个大小为320x200(64 000像素)INT_ARGB类型的BufferedImage(每个值8位+ alpha级别8位):

    final BufferedImage bi = new BufferedImage( 320, 200, BufferedImage.TYPE_INT_ARGB );

然后你可以将浮点数组转换为RGB值并填充图像:

    for (int x = 0; x < 320; x++) {
        for (int y = 0; y < 200; y++) {
            final int r = (int) (f[x+y*200*3] * 255.0);
            final int g = (int) (f[x+y*200*3+1] * 255.0);
            final int b = (int) (f[x+y*200*3+2] * 255.0);
            bi.setRGB( x, y, 0xFF000000 | (r << 16) | (g << 8) | b );
        }
    }

请注意,您是否会显示此图像,它会显示为灰色,但如果放大它,您会发现它实际上是由完全随机的彩色像素组成。它只是随机数生成器非常好,它在屏幕上看起来都是灰色的:)