函数名:Imagick::resampleImage()
适用版本:PHP 5 >= 5.4.0, PECL imagick >= 2.3.0
用法:该函数用于重新采样图像,改变其分辨率和像素密度。
语法:public Imagick::resampleImage(float $x_resolution, float $y_resolution, int $filter, float $blur)
参数:
- $x_resolution: 指定图像的水平分辨率(每英寸像素数)。
- $y_resolution: 指定图像的垂直分辨率(每英寸像素数)。
- $filter: 指定用于重新采样的滤波器类型,可选值有:
- Imagick::FILTER_UNDEFINED (0): 未定义滤波器。
- Imagick::FILTER_POINT (1): 点滤波器。
- Imagick::FILTER_BOX (2): 盒状滤波器。
- Imagick::FILTER_TRIANGLE (3): 三角形滤波器。
- Imagick::FILTER_HERMITE (4): Hermite滤波器。
- Imagick::FILTER_HANNING (5): Hanning滤波器。
- Imagick::FILTER_HAMMING (6): Hamming滤波器。
- Imagick::FILTER_BLACKMAN (7): Blackman滤波器。
- Imagick::FILTER_GAUSSIAN (8): Gaussian滤波器。
- Imagick::FILTER_QUADRATIC (9): Quadratic滤波器。
- Imagick::FILTER_CUBIC (10): Cubic滤波器。
- Imagick::FILTER_CATROM (11): Catrom滤波器。
- Imagick::FILTER_MITCHELL (12): Mitchell滤波器。
- Imagick::FILTER_LANCZOS (13): Lanczos滤波器。
- Imagick::FILTER_BESSEL (14): Bessel滤波器。
- Imagick::FILTER_SINC (15): Sinc滤波器。
- $blur: 指定滤波器的模糊量。
返回值:成功时返回 true,失败时返回 false。
示例:
// 创建 Imagick 对象
$image = new Imagick('input.jpg');
// 设置分辨率为 300x300 像素/英寸,使用 Lanczos 滤波器,模糊量为 1.0
$resampled = $image->resampleImage(300, 300, Imagick::FILTER_LANCZOS, 1.0);
if ($resampled) {
// 保存重新采样后的图像
$resampled->writeImage('output.jpg');
echo "图像重新采样成功!";
} else {
echo "图像重新采样失败!";
}
// 销毁对象
$image->destroy();
$resampled->destroy();
注意事项:
- 滤波器类型和模糊量的选择会影响图像的质量和处理速度,需要根据实际需求进行调整。
- 重新采样图像可能会导致图像质量的损失,特别是当目标分辨率较低于原始图像分辨率时。建议在实际应用中进行充分测试和调优。
- 使用前需要确保已经安装了 imagick 扩展,并且 PHP 版本符合要求。