📅  最后修改于: 2023-12-03 15:33:35.927000             🧑  作者: Mango
getQuantumDepth()
函数在 ImageMagick 库中,getQuantumDepth()
函数返回图像的量化深度 (quantum depth)。
它是指颜色能够表现的最大位数,在 ImageMagick 中,通常为 8bits,即 256 种颜色。但也可能会更多。
以下是可能的代码实现:
function getQuantumDepth(): int
{
if (extension_loaded('imagick')) {
$quantum = Imagick::getQuantumDepth();
if ($quantum > 16) {
return $quantum;
}
}
return 8;
}
上述代码首先判断 imagick 扩展是否加载,如果是,则获取当前 imagick 所使用的量化深度。如果量化深度大于 16, 则返回该值,否则返回 8。
注:本文着重于 Imagick 的相关知识,不会过多讨论其他库或者其他方案实现 getQuantumDepth()
函数的方式。
ImageMagick 是一个功能强大的图像处理库,可用于从命令行、脚本或在各种编程语言中调用它的 API 来处理图像。它支持超过 100 种格式的图片,包括 JPEG、PNG、GIF、SVG 等等,可以创建、编辑、转换及获取图片,支持多线程,是 Linux、Windows、macOS 等各种操作系统中最常用的图像处理库之一。
Imagick 是 ImageMagick 的 PHP 扩展,拥有与应用程序服务器端进行交互的能力。
量化深度是指一个图像每个通道 (如 R、G、B 等) 能够表现的颜色级别数量。例如,对于一个 8bits 的 RGB 图像来说,每个颜色通道最多只能表现 256 种不同的颜色。因此,整个图像最多只能显示 $256^3$ 种不同的颜色,即差不多是 1677 万种。
量化深度越高,每个通道可以表现的颜色级别越多,图像颜色的渐变会越加细致,就越逼真,但是由于颜色数目的减少,图像的大小要更大。
总之,量化深度是调整图像中颜色的最终数量的一件令人感到困惑的事情。
在 ImageMagick 中,量化深度有两个常用的值:8bits 和 16bits。Imagick 扩展也支持其他量化深度,比如 32bits 和 64bits,但这两个值通常不会使用。
8bits 的图片有 256 种颜色,是最常用的深度,对于很多情况,它足以表现出几乎每个人类眼睛都能区分的色彩。如果一个图像改成 8bits,它的大小会大大减少,因为它只需要原来的 $1/3$。
16bits 的片有 65,536 种颜色,会非常适合表现可能在 8bits 中出现渐变的图像,如渐变或斑点。这个深度通常被用于打印、出版业,需要颜色的精度更高。
在实际使用 ImageMagick 时,我们通常并不需要担心量化深度。ImageMagick 会尽可能自动优化颜色,将图片转化为更小的尺寸,只要不会导致严重损失质量。
在 Imagick 扩展中,getQuantumDepth()
函数是获取当前图片的量化深度的主要方法。本文介绍了 Imagick 和量化深度的基本知识,以及使用 Imagick 获取量化深度的方法和相应代码。