PHPerKaigi 2024

imagesetinterpolation

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

imagesetinterpolationDefine o método de interpolação

Descrição

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

Define o método de interpolação, que afeta a renderização de várias funções da GD, tal como a função imagerotate().

Parâmetros

image

Um objeto GdImage, retornado por uma das funções de criação de imagem, como imagecreatetruecolor().

method

O método de interpolação, que pode ser um dos seguintes:

Valor Retornado

Retorna true em caso de sucesso ou false em caso de falha.

Registro de Alterações

Versão Descrição
8.0.0 O parâmetro image agora espera uma instância de GdImage; anteriormente, um resource gd válido era esperado.

Exemplos

Exemplo #1 Exemplo de imagesetinterpolation()

<?php
// Carrega uma imagem
$im = imagecreate(500, 500);

// Por padrão a interpolação é IMG_BILINEAR_FIXED, trocando
// para o filtro 'Mitchell':
imagesetinterpolation($im, IMG_MITCHELL);

// Continua o trabalho com $im ...
?>

Notas

Alterar o método de interpolação afeta as seguintes funções durante a renderização:

Veja Também

add a note

User Contributed Notes 1 note

up
-1
shaun at slickdesign dot com dot au
6 years ago
Setting the interpolation does not carry through to any images created by imageaffine() or imagerotate(). It defaults to IMG_BILINEAR_FIXED and would need to be set on each generated image as required.

<?php
imagesetinterpolation
( $image, IMG_NEAREST_NEIGHBOUR );

// Rotated using IMG_NEAREST_NEIGHBOUR
$rotated = imagerotate( $image, 45, $transparent );

// Rotated using IMG_BILINEAR_FIXED
$rotated_again = imagerotate( $rotated, 45, $transparent );
?>

Setting the interpolation to IMG_NEAREST_NEIGHBOUR can help to preserve details and prevent sampling issues when rotating an image at 90 degree increments, including when rotating clockwise.

<?php
// Rotated image can appear blurred and on a slight angle.
$rotated = imagerotate( $image, -360, $transparent );

// Similar to starting Image although it may still show a background or be on a slight angle.
imagesetinterpolation( $image, IMG_NEAREST_NEIGHBOUR );
$rotated = imagerotate( $image, -360, $transparent );
?>
To Top