如何将负(<0)RGB颜色值放入PIL中的图像?

时间:2019-01-30 21:08:17

标签: python image compression python-imaging-library

我正在尝试为学校做一种增量编码任务,我需要将相应像素之间的差异放入下一个像素,以便稍后对它们进行解码。不幸的是,如果PIL函数的差值为负,则putdata将以某种方式将值转换为0,这使我以后无法使用逆滤波器对其进行解码。我该怎么做才能使其成为可能?请注意,编码后的图像不必看起来不错,它只需要包含我解码所需的数据即可。

.db-journal

1 个答案:

答案 0 :(得分:1)

为每个RGB值使用模256。这意味着所有值最终都在[0-255]范围内,即一个字节,例如-1对应255。

然后,对于两个 R R0R1,它们的差为:

Rdiff = (R0 - R1) % 256

稍后,您可以进行相反操作:

R0 = (R1 + Rdiff) % 256

只要所有输入也都在0-255范围内(在本例中为该范围),计算将是正确的。

这些是一些示例编码(Rdiff)值,其逻辑如下:

R0=50, R1=20  --> Rdiff=30
R0=10, R1=50  --> Rdiff=216
R0=0,  R1=5   --> Rdiff=251
R0=33, R1=200 --> Rdiff=89