PHP Conference Japan 2024

imagesetinterpolation

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

imagesetinterpolation设置插值方法

描述

imagesetinterpolation(GdImage $image, int $method = IMG_BILINEAR_FIXED): bool

设置插值方法,设置插值方法会影响 GD 中各种函数的渲染,例如 imagerotate() 函数。

参数

image

一个 GdImage 对象,由其中一个图像创建函数返回,例如 imagecreatetruecolor()

method

插值方法,可以是以下之一

返回值

成功时返回 true,失败时返回 false

变更日志

版本 描述
8.0.0 image 现在期望一个 GdImage 实例;之前,期望一个有效的 gd 资源

示例

示例 #1 imagesetinterpolation() 示例

<?php
// 加载图像
$im = imagecreate(500, 500);

// 默认插值为 IMG_BILINEAR_FIXED,切换
// 使用“Mitchell”滤波器:
imagesetinterpolation($im, IMG_MITCHELL);

// 继续使用 $im ...
?>

注释

更改插值方法会影响以下函数在渲染时的行为

参见

添加注释

用户贡献的注释 1 条注释

-1
shaun at slickdesign dot com dot au
7 年前
设置插值不会贯穿到由 imageaffine() 或 imagerotate() 创建的任何图像。它默认为 IMG_BILINEAR_FIXED,并且需要根据需要在每个生成的图像上进行设置。

<?php
imagesetinterpolation
( $image, IMG_NEAREST_NEIGHBOUR );

// 使用 IMG_NEAREST_NEIGHBOUR 旋转
$rotated = imagerotate( $image, 45, $transparent );

// 使用 IMG_BILINEAR_FIXED 旋转
$rotated_again = imagerotate( $rotated, 45, $transparent );
?>

将插值设置为 IMG_NEAREST_NEIGHBOUR 可以帮助保留细节并在以 90 度增量旋转图像时防止采样问题,包括顺时针旋转时。

<?php
// 旋转后的图像可能显得模糊且略微倾斜。
$rotated = imagerotate( $image, -360, $transparent );

// 类似于起始图像,尽管它可能仍然显示背景或略微倾斜。
imagesetinterpolation( $image, IMG_NEAREST_NEIGHBOUR );
$rotated = imagerotate( $image, -360, $transparent );
?>
To Top