【问题标题】:Why pixels have not the same weight?为什么像素的权重不一样?
【发布时间】:2021-07-10 18:25:14
【问题描述】:
我不明白:
如果我们考虑值 00001111 (15) 是一个字节和一个 RGB 像素 (220,180,155),无论像素的值如何,它都是 3 个字节。
那么为什么当我减小像素值(使用位移操作或其他)时
我的图像不是 = 像素数 x 3。当我说“像素数”时,我的意思是“大于全黑的像素数”。
机制如何运作?它是按位计算的,然后除以八作为平均值吗?
如果我有一张 3MB 的图片并且我做了一个位移(每个 3 RGB 通道上的因子 2)我找到了一张 300 KB 的图片。
不要告诉我 90% 的像素都变成了全黑。
谢谢。
【问题讨论】:
标签:
encoding
compression
python-imaging-library
jpeg
pixel
【解决方案1】:
如果将所有像素值向右移动 2 个位置,您将获得大约 1/4 的红色阴影,大约 1/4 的绿色和蓝色。这意味着总体而言,您将拥有更少的颜色。这意味着您的图像可能少于 256 种颜色,这意味着它可以是 palettised。这也意味着它可能会更好地压缩,因为更少的唯一序列将有更多的重复。
您可以通过多种方式检查您的图像是否已调色:
- 用 PIL 打开它并检查
image.mode 是否包含P
- 在其上运行
exiftool 并检查Colour Type 是否为Palette
- 使用
magick identify -verbose YOURIMAGE在其上运行ImageMagick
您可以使用 ImageMagick 计算图像中独特颜色的数量:
magick identify -format %k YOURIMAGE
或者您可以在 Python 中使用this answer 的最后一部分(标题为“更新”)。