Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的渐变颜色查找_Java_Image Processing_Gradient - Fatal编程技术网

Java中的渐变颜色查找

Java中的渐变颜色查找,java,image-processing,gradient,Java,Image Processing,Gradient,我有一个从0到1的值列表。我想通过使用将这些浮点值转换为RGB值的渐变将此列表转换为图像。Java中是否有任何工具为您提供此功能?0应映射为0 1应映射为255 请记住,你需要三种颜色 因此,将浮点数乘以255,并将其转换为int。也许可以做你想做的事。不清楚如何将浮点值列表转换为渐变。通常,渐变由两种颜色和一些在这些颜色之间插值的机制组成GradientPaint实现线性渐变。假设您有一个由64000个对应于RGB值的三元组组成的数组,如下所示: final Random rand =

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

0应映射为0
1应映射为255

请记住,你需要三种颜色


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

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

假设您有一个由64000个对应于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[
    }
然后,您可以将浮点数组转换为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 );
        }
    }
for(int x=0;x<320;x++){
对于(int y=0;y<200;y++){
最终整数r=(整数)(f[x+y*200*3]*255.0);
最终整数g=(整数)(f[x+y*200*3+1]*255.0);
最终整数b=(整数)(f[x+y*200*3+2]*255.0);

bi.setRGB(x,y,0xFF000000 |)(r这仅用于转换为与RGB Photoshop类似的值,因为gradient Laurence建议了一个不错的工具,您可能不需要进行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 );
        }
    }