English | 简体中文 | 繁體中文
查询

Imagick::resampleImage()函数—用法及示例

「 重新采样图像,改变其分辨率和像素密度 」


函数名: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 版本符合要求。
补充纠错
上一个函数: Imagick::resetImagePage()函数
下一个函数: Imagick::scaleImage()函数
热门PHP函数
分享链接