在Java中为图像使用自定义颜色映射
我有一个关于通过索引进行颜色映射的问题 我尝试了在上找到的代码 它工作得很好,但我试图加载一个自定义图像jpeg映射到我自己的彩色地图,但它没有工作的权利。我只看到在白色背景上画了一堆绿色和蓝色像素。 我的自定义颜色映射方法如下:在Java中为图像使用自定义颜色映射,java,graphics,image,jpeg,Java,Graphics,Image,Jpeg,我有一个关于通过索引进行颜色映射的问题 我尝试了在上找到的代码 它工作得很好,但我试图加载一个自定义图像jpeg映射到我自己的彩色地图,但它没有工作的权利。我只看到在白色背景上画了一堆绿色和蓝色像素。 我的自定义颜色映射方法如下: public void inintByteArrays() { double[][] c = // basic color map { { 0.0000, 0.0000, 0.5625 }, { 0.0000, 0.0000, 0.6250 }, {
public void inintByteArrays() {
double[][] c = // basic color map
{ { 0.0000, 0.0000, 0.5625 }, { 0.0000, 0.0000, 0.6250 },
{ 0.0000, 0.0000, 0.6875 }, { 0.0000, 0.0000, 0.6875 },
{ 0.0000, 0.0000, 0.7500 }, { 0.0000, 0.0000, 0.8125 },
{ 0.0000, 0.0000, 0.8750 }, { 0.0000, 0.0000, 0.9375 },
{ 0.0000, 0.0000, 1.0000 }, { 0.0000, 0.0625, 1.0000 },
{ 0.0000, 0.1250, 1.0000 }, { 0.0000, 0.1875, 1.0000 },
{ 0.0000, 0.2500, 1.0000 }, { 0.0000, 0.3125, 1.0000 },
{ 0.0000, 0.3750, 1.0000 }, { 0.0000, 0.4375, 1.0000 },
{ 0.0000, 0.5000, 1.0000 }, { 0.0000, 0.5625, 1.0000 },
{ 0.0000, 0.6250, 1.0000 }, { 0.0000, 0.6875, 1.0000 },
{ 0.0000, 0.7500, 1.0000 }, { 0.0000, 0.8125, 1.0000 },
{ 0.0000, 0.8750, 1.0000 }, { 0.0000, 0.9375, 1.0000 },
{ 0.0000, 1.0000, 1.0000 }, { 0.0625, 1.0000, 0.9375 },
{ 0.1250, 1.0000, 0.8750 }, { 0.1875, 1.0000, 0.8125 },
{ 0.2500, 1.0000, 0.7500 }, { 0.3125, 1.0000, 0.6875 },
{ 0.3750, 1.0000, 0.6250 }, { 0.4375, 1.0000, 0.5625 },
{ 0.5000, 1.0000, 0.5000 }, { 0.5625, 1.0000, 0.4375 },
{ 0.6250, 1.0000, 0.3750 }, { 0.6875, 1.0000, 0.3125 },
{ 0.7500, 1.0000, 0.2500 }, { 0.8125, 1.0000, 0.1875 },
{ 0.8750, 1.0000, 0.1250 }, { 0.9375, 1.0000, 0.0625 },
{ 1.0000, 1.0000, 0.0000 }, { 1.0000, 0.9375, 0.0000 },
{ 1.0000, 0.8750, 0.0000 }, { 1.0000, 0.8125, 0.0000 },
{ 1.0000, 0.7500, 0.0000 }, { 1.0000, 0.6875, 0.0000 },
{ 1.0000, 0.6250, 0.0000 }, { 1.0000, 0.5625, 0.0000 },
{ 1.0000, 0.5000, 0.0000 }, { 1.0000, 0.4375, 0.0000 },
{ 1.0000, 0.3750, 0.0000 }, { 1.0000, 0.3125, 0.0000 },
{ 1.0000, 0.2500, 0.0000 }, { 1.0000, 0.1875, 0.0000 },
{ 1.0000, 0.1250, 0.0000 }, { 1.0000, 0.0625, 0.0000 },
{ 1.0000, 0.0000, 0.0000 }, { 0.9375, 0.0000, 0.0000 },
{ 0.8750, 0.0000, 0.0000 }, { 0.8125, 0.0000, 0.0000 },
{ 0.7500, 0.0000, 0.0000 }, { 0.6875, 0.0000, 0.0000 },
{ 0.6250, 0.0000, 0.0000 }, { 0.5625, 0.0000, 0.0000 },
{ 0.5000, 0.0000, 0.0000 } };
for (int i = 0; i < c.length; i++) {
for (int j = 0; j < c[i].length; j++) {
if (j == 0)
r[i] = (byte) ((byte) c[i][j]*255);
if (j == 1)
g[i] = (byte) ((byte) c[i][j]*255);
if (j == 2)
b[i] = (byte) ((byte) c[i][j]*255);
}
}
我的问题是,我如何使用我的彩色地图为任何图像,我想加载和地图在正确的方式。多谢各位
您好,蛋白质1。JPEG不使用索引颜色,它们存储RGB值 你想达到什么效果?例如,您可以将JPEG转换为灰度,将灰度存储为索引,然后使用颜色映射
public void inintByteArrays() {
double[][] c = // basic color map
{ { 0.0000, 0.0000, 0.5625 }, { 0.0000, 0.0000, 0.6250 },
{ 0.0000, 0.0000, 0.6875 }, { 0.0000, 0.0000, 0.6875 },
{ 0.0000, 0.0000, 0.7500 }, { 0.0000, 0.0000, 0.8125 },
{ 0.0000, 0.0000, 0.8750 }, { 0.0000, 0.0000, 0.9375 },
{ 0.0000, 0.0000, 1.0000 }, { 0.0000, 0.0625, 1.0000 },
{ 0.0000, 0.1250, 1.0000 }, { 0.0000, 0.1875, 1.0000 },
{ 0.0000, 0.2500, 1.0000 }, { 0.0000, 0.3125, 1.0000 },
{ 0.0000, 0.3750, 1.0000 }, { 0.0000, 0.4375, 1.0000 },
{ 0.0000, 0.5000, 1.0000 }, { 0.0000, 0.5625, 1.0000 },
{ 0.0000, 0.6250, 1.0000 }, { 0.0000, 0.6875, 1.0000 },
{ 0.0000, 0.7500, 1.0000 }, { 0.0000, 0.8125, 1.0000 },
{ 0.0000, 0.8750, 1.0000 }, { 0.0000, 0.9375, 1.0000 },
{ 0.0000, 1.0000, 1.0000 }, { 0.0625, 1.0000, 0.9375 },
{ 0.1250, 1.0000, 0.8750 }, { 0.1875, 1.0000, 0.8125 },
{ 0.2500, 1.0000, 0.7500 }, { 0.3125, 1.0000, 0.6875 },
{ 0.3750, 1.0000, 0.6250 }, { 0.4375, 1.0000, 0.5625 },
{ 0.5000, 1.0000, 0.5000 }, { 0.5625, 1.0000, 0.4375 },
{ 0.6250, 1.0000, 0.3750 }, { 0.6875, 1.0000, 0.3125 },
{ 0.7500, 1.0000, 0.2500 }, { 0.8125, 1.0000, 0.1875 },
{ 0.8750, 1.0000, 0.1250 }, { 0.9375, 1.0000, 0.0625 },
{ 1.0000, 1.0000, 0.0000 }, { 1.0000, 0.9375, 0.0000 },
{ 1.0000, 0.8750, 0.0000 }, { 1.0000, 0.8125, 0.0000 },
{ 1.0000, 0.7500, 0.0000 }, { 1.0000, 0.6875, 0.0000 },
{ 1.0000, 0.6250, 0.0000 }, { 1.0000, 0.5625, 0.0000 },
{ 1.0000, 0.5000, 0.0000 }, { 1.0000, 0.4375, 0.0000 },
{ 1.0000, 0.3750, 0.0000 }, { 1.0000, 0.3125, 0.0000 },
{ 1.0000, 0.2500, 0.0000 }, { 1.0000, 0.1875, 0.0000 },
{ 1.0000, 0.1250, 0.0000 }, { 1.0000, 0.0625, 0.0000 },
{ 1.0000, 0.0000, 0.0000 }, { 0.9375, 0.0000, 0.0000 },
{ 0.8750, 0.0000, 0.0000 }, { 0.8125, 0.0000, 0.0000 },
{ 0.7500, 0.0000, 0.0000 }, { 0.6875, 0.0000, 0.0000 },
{ 0.6250, 0.0000, 0.0000 }, { 0.5625, 0.0000, 0.0000 },
{ 0.5000, 0.0000, 0.0000 } };
for (int i = 0; i < c.length; i++) {
for (int j = 0; j < c[i].length; j++) {
if (j == 0)
r[i] = (byte) ((byte) c[i][j]*255);
if (j == 1)
g[i] = (byte) ((byte) c[i][j]*255);
if (j == 2)
b[i] = (byte) ((byte) c[i][j]*255);
}
}