2017-06-04 66 views
1

导入图像时,遍历像素这样的:保存导入图像的色彩深度与</p> <pre class="lang-java prettyprint-override"><code>loadImage("...") </code></pre> <p>命令

img.loadPixels(); 
int w = img.width; 
int h = img.height; 
for (int y = 0; y < h; y++) { 
    for (int x = 0; x < w; x++) { 
    int loc = x + y*w; 
    float r = red(img.pixels[loc]); 
    float g = green(img.pixels[loc]); 
    float b = blue(img.pixels[loc]); 
    println(r + ", " + g + ", " + b); 
    } 
} 

RGB值似乎总是在0即使图像文件的深度为16位,每个通道的值也应该在0到65535之间。 是否可以保留正确的颜色深度?

+0

你就不能用'65535/255'乘号? –

+0

这是行不通的,因为即使数字r g和b存储为浮点数,它们基本上都是整数,因此相乘实际上并不会恢复原始深度。 –

+0

'red()','green()'和'blue()'函数返回一个标准化的值。也许尝试直接访问像素[loc]的值,而不是通过颜色函数传递它? –

回答

-1

你还没有说loadImage命令来自哪个库。 可能有16位版本,但不太可能。 24位是一种标准,适用于所有非常高端的工作。

我建议你做的是看看我的TIFF加载器(它像loadImage一样返回24位图像),并修改它以返回16位通道。这并不困难,只是不丢弃较大通道图像的低位(浮点和16位)。

Her'e的TIFF装载机: https://github.com/MalcolmMcLean/tiffloader

相关问题