生成光谱调色板
有没有一种简单的方法来转换Java(RGB,HSV和Lab)中的颜色模型。
假设RGB颜色模型:
- 如何计算黑体光谱调色板? 我想将它用于热图图表。
- 单波长光谱怎么样?
编辑:我发现ColorSpace类可用于RGB / CIE和许多其他颜色模型之间的转换。
您可以使用HSV颜色模型构建这样的调色板。 一旦你有HSV到RGB代码到位并且玩了几分钟的数字,这很容易。
但是,我认为将代码添加到项目中只是为了生成一个小调色板是不值得的。
从文件中提取所需的调色板并将它们添加为静态数组会更容易,也更少工作。
Photoshop让你编辑调色板,并带有一个非常漂亮的黑色主体调色板作为预设。
您可以将它们保存为.act文件。 文件本身只是一个简单的256色á3字节文件(顺序为读取,绿色,蓝色。每个通道8位)。
Java具有内置的RGB到HSB转换。 每当我需要Java中的快速颜色托盘时,我就这样做:
public Color[] generateColors(int n) { Color[] cols = new Color[n]; for(int i = 0; i < n; i++) { cols[i] = Color.getHSBColor((float) i / (float) n, 0.85f, 1.0f); } return cols; }
这是一个快速而肮脏的黑客(我会调整你的应用程序的'魔术'数字),但对于我的简单用途,它会产生一个漂亮明亮的托盘。
也许我不理解你的问题,但你无法从RGB输出设备真正生成真正的黑体光谱。 有限的色域将是一个问题,如果没有别的。 如果您想要的只是视觉上类似于黑体光谱的东西,那可能会容易得多。
作为近似,从(R,G,B)(0,0,0)到(255,0,0),然后到(255,255,0),然后到(255,255,255)。 这会给你暗红色到橙色,黄色到白色的过渡。
如果你想要更科学的东西,维基百科关于黑体辐射的文章有一些颜色与温度的关系。 一旦你弄清楚CIE坐标,你可以在你喜欢的颜色空间中将它们转换为RGB。
编辑:找到一些其他在线参考: 太阳是什么颜色的? 黑体是什么颜色的?
您可以生成此色谱http://sofzh.miximages.com/java/ktLmt.jpg
使用以下代码:
public void render(Screen screen) { int green = 255; int red = 0; for (int i = 0; i <= 255 * 2; i++) { int rate = i / 255; screen.fillRect((x + (i * width)/6), y, width, height, new Color(red, green, 0)); red += 1 - rate; green -= rate; } }
这是在AS3中制作HSL颜色方块的好方法。
/** * Generate a BitmapData HSL color square (nxn) of hue * At a low n dimension you get cool blocky color palettes (eg try n=10) */ function generateColorSquare(n:uint, hue:uint):BitmapData { var bd:BitmapData = new BitmapData(n, n, false, 0xFFFFFF); for (var i:uint=n*n; i > 0; i--) { bd.setPixel(i % n, Math.floor(i / n), HSBColor.convertHSBtoRGB(hue, i / (n*n), (1/n) * (i % n) )); } return bd; }
- 如何从PDF文件中删除所有图像/绘图并仅以Java格式保留文本?
- 为什么f:validateDoubleRange仅适用于@SessionScoped?
- Java中的Apache HttpClient,instream.toString = org.apache.http.conn.EofSensorInputStream
- 读取Java字节码指令:数字是什么意思?
- C ++促进了类定义和类实现之间的分离,但没有JAVA
- TYPE_INT_RGB和TYPE_INT_ARGB的格式
- 在SWT树或表中嵌入自定义小部件
- 如何使用request.getParameterValues?
- JasperReports:无法找到子报告