📜  PHP | imagick的liquidRescaleImage()函数(1)

📅  最后修改于: 2023-12-03 15:33:33.743000             🧑  作者: Mango

PHP | imagick的liquidRescaleImage()函数

简介

liquidRescaleImage()是PHP imagick扩展中的一种功能,它可以尝试保持图像的主要内容的情况下应用缩放。

该函数可以将图像沿着两个维度进行收缩或扩展,以达到所需的大小。它的内部算法可以在图像的变形和失真最小化之间取得平衡。

语法

$imagick->liquidRescaleImage(int $width, int $height, float $delta_x, float $rigidity)

  • $width:新宽度。
  • $height:新高度。
  • $delta_x:水平强度,通常为1.0。
  • $rigidity:刚度,通常为0.0 ~ 1.0之间的数字,表示重心方向上的拉伸力量。
示例
基本使用
<?php
$imagick = new \Imagick();
$imagick->readImage('example.jpg');
$imagick->liquidRescaleImage(300, 200, 1.0, 0.0);
$imagick->writeImage('example_resized.jpg');
?>

上述代码将example.jpg的尺寸调整为300×200,并将结果保存为example_resized.jpg

处理透明背景
<?php
$imagick = new \Imagick();
$imagick->readImage('example.png');
$imagick->setImageBackgroundColor('white');
$imagick->liquidRescaleImage(300, 200, 1.0, 0.0);
$imagick->setImageFormat('png');
$imagick->writeImage('example_resized.png');
?>

上述代码将example.png的尺寸调整为300×200,背景透明部分会变成白色,结果保存为example_resized.png

应用刚度
<?php
$imagick = new \Imagick();
$imagick->readImage('example.jpg');
$imagick->liquidRescaleImage(400, 400, 1.0, 0.5);
$imagick->writeImage('example_resized.jpg');
?>

上述代码将example.jpg的尺寸调整为400×400,并将rigidity设置为0.5

注意事项
  • liquidRescaleImage()需要安装Imagemagick和Imagick扩展。
  • 请谨慎使用该函数,应用不当会使图像产生不可接受的失真。
  • liquidRescaleImage()不适用于所有类型的图像,特别是那些具有大量细节的图像。