【发布时间】:2015-11-10 06:15:09
【问题描述】:
是否可以通过逐像素迭代并为每个像素设置 RGB 值来创建新的 tif?
让我解释一下我正在尝试做什么。我正在尝试打开一个现有的 tif,使用 TIFFReadRGBAImage 读取它,获取 TIFFGetR/TIFFGetG/TIFFGetB 给出的 RGB 值,从 255 中减去它们,获取这些新值并使用它们来写入每个一个一个像素。最后,我想得到原始图像和一个新的“补充”图像,就像原始图像的底片一样。
有没有办法使用 LibTiff 做到这一点?我已经查看了文档并在 Google 上进行了搜索,但我只看到了很短的 TIFFWriteScanline 示例,它提供了如此少的代码/上下文/cmets 行,以至于我无法弄清楚如何以我的方式实现它希望它工作。
我对编程还是很陌生,所以如果有人能指点我一个包含大量解释性 cmets 的完整示例或直接帮助我解决我的代码,我将不胜感激。感谢您花时间阅读本文并帮助我学习。
到目前为止我所拥有的:
// Other unrelated code here...
//Invert color values and write to new image file
for (e = height - 1; e != -1; e--)
{
for (c = 0; c < width; c++)
{
red = TIFFGetR(raster[c]);
newRed = 255 - red;
green = TIFFGetG(raster[c]);
newGreen = 255 - green;
blue = TIFFGetB(raster[c]);
newBlue = 255 - blue;
// What to do next? Is this feasible?
}
}
// Other unrelated code here...
Full code如果你需要的话。
【问题讨论】:
-
我已经有一段时间没有写tiff代码了,但是您可以手动构建图像而不会遇到麻烦。请务必注意不同的格式、压缩、单独的平面等,除非您知道所有源都将采用一种格式。对于“下一步做什么”,构建一整行图像,然后使用 TIFFWriteScanline(....)。
-
@johnelemans 好的,谢谢。关于如何用我的 RGB 值建立一条线的任何指导?