FastSitePHP\Media\Image

Allow an image file to be opened, manipulated, and saved. This class provides basic functionally and is not full featured with filters or advanced features. It is intended to provide needed core functionally when working with image file uploads and for thumbnail generation.

For additional PHP image libraries see the following projects:

Código Fonte

GitHub

Código de Exemplo

Abra e Edite Arquivos de Imagens

// Utilize a Classe Media Image para abrir uma imagem. Se a imagem for
// inválida ou a extensão do arquivo não corresponder ao tipo de arquivo,
// então, uma exceção será lançada. Extensões de arquivos suportadas =
// [jpg, jpeg, gif, png, webp]
$img = new \FastSitePHP\Media\Image();
$img->open($file_path);

// Gera uma Miniatura ou Redimensiona a Imagem para um máximo especificado
// de largura e altura.
//
// Quando ambas largura e altura são especificadas, a imagem será
// redimensionada para o menor dos dois valores para que ela se ajuste. Se
// somente a largura ou somente a altura for especificada, então, a imagem
// será dimensionada proporcionalmente para o valor.
$max_width = 200; // Pixels
$max_height = 200;
$img->resize($max_width, $max_height);

// Imagens pode também serem cortadas para uma dimensão especificada.
// Isto pode ser utilizado com JavaScript ou bibliotecas de corte para Apps
// para permitir que usuários gerem miniaturas de uma imagem completa enviada.
// Por exemplo, permita o usuário cortar uma imagem enviada para uma
// miniatura de perfil.
$left = 50;
$top = 40;
$width = 120;
$height = 80;
$target_width = $width * 2; // Opcional
$target_height = $height * 2; // Opcional
$img->crop($left, $top, $width, $height, $target_width, $target_height);

// Imagens podem ser rotacionadas o que é útil para sites que permitem
// usuários enviar imagens, por que imagens podem, geralmente, ser enviadas
// com a rotação incorreta dependendo do dispositivo móvel ou um usuário
// pode simplesmente querer modificar a rotação.
$degrees = 180;
$img->rotateLeft();
$img->rotateRight();
$img->rotate($degrees);

// Qualidade de Salvamento (0 to 100) pode ser especificada quando for
// salvar imagen JPG ou WEBP. E Nível de Compressão (0 to 9) pode ser
// especificado ao salvar arquivos PNG.
$img->saveQuality(90);   // Qualidade Padrão
$img->pngCompression(6); // Nível de Compressão Padrão

// Sobrescreva uma imagem existente simplesmente chamando [save()] sem um
// caminho ou salve para um novo arquivo especificando um caminho completo
// de arquivo.
$img->save($save_path);

// Opcionalmente feche a imagem para liberar memória quando terminar de
// trabalhar com ela. Isto acontece automaticamente quando a variável não é
// mais utilizada.
$img->close();

Métodos

__construct($image_path = null)

Class Constructor - Optionally open an image

__destruct()

Class Destructor - Free memory by closing image when done.

open($image_path)

Open a image file (jpg, png, gif, or webp). Image type is determined by the file extension. If the file contains an invalid image then an E_WARNING error will be triggered causing an ErrorException to be thrown when using the default error setup. Opening a [*.webp] image requires PHP 5.4 or greater.

Retorna: $this

resize($max_width = null, $max_height = null)

Resize an image to a specified max width and height.

When both width and height are specified the image will be sized to the smaller of the two values so it fits.

If only width or only height are specified then image will be sized to that value.

Retorna: $this

crop($left, $top, $width, $height, $target_width = null, $target_height = null)

Resize an image to a specified max width and height.

This can be used with JavaScript or App cropping libraries to allow users to generate thumbnails from a full uploaded image. For example allow a user to crop an uploaded image to a profile thumbnail.

Target Width and Height are optional and can be used to force images to a specific size. For example if you want to allow users to generate a 50x50 profile thumbnail on every crop then use target width and height.

Retorna: $this

rotateLeft()

Rotate an image 90 degrees left (counter-clockwise).

Retorna: $this

rotateRight()

Rotate an image 90 degrees right (clockwise).

Retorna: $this

rotate($degrees)

Rotate an image by the given angle.

Retorna: $this

saveQuality($new_value = null)

Propriedade Getter / Setter

Specify the save quality (0 to 100) to be used when saving JPG or WEBP files.

Defaults to 90.

Retorna: int | $this

pngCompression($new_value = null)

Propriedade Getter / Setter

Specify the save PNG save compression-level (0 to 9). Defaults to 6.

For more on this topic refer to the links:

Retorna: int | $this

save($file_name = null)

Save the image. If no file name is specified then the name of the opened file will be overwritten otherwise if only a file name is specified then a new file will be saved in the same directory/folder. Additionally full paths can be specified to save to a different directory/folder.

Saving a [*.webp] image requires PHP 5.4 or greater, however using PHP 7 or later is recommended if saving WEBP because saving might silently fail on old versions of PHP.

Retorna: $this

close()

Close Image to free memory