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