(16) 981791110 contato@policast.studio

O que é o LiipImagineBundle?

O LiipImagineBundle é um pacote para o Symfony que permite manipular imagens de forma simples e eficiente. Com ele, é possível redimensionar, cortar, aplicar filtros e diversas outras transformações em imagens, de forma fácil e rápida.

Como instalar o LiipImagineBundle no Symfony?

Para instalar o LiipImagineBundle no Symfony, é necessário adicionar a dependência no arquivo composer.json do seu projeto e depois executar o comando “composer update” na linha de comando. Em seguida, é necessário registrar o pacote no arquivo AppKernel.php, adicionando a linha “new LiipImagineBundleLiipImagineBundle()” no array de bundles.

Como criar um filtro de imagem no LiipImagineBundle?

Para criar um filtro de imagem no LiipImagineBundle, é necessário criar uma classe que implemente a interface FilterInterface e definir os métodos de manipulação de imagem. Em seguida, é possível registrar o filtro no arquivo de configuração do pacote, informando o nome do filtro e a classe que o implementa.

namespace AppBundleFilter;

use LiipImagineBundleImagineFilterFilterInterface;
use LiipImagineBundleImagineImageInterface;

class SepiaFilter implements FilterInterface
{
public function apply(ImageInterface $image)
{
// Aplica um efeito de sépia na imagem
}
}

Como usar o LiipImagineBundle em um controlador no Symfony?

Para usar o LiipImagineBundle em um controlador no Symfony, é necessário injetar o serviço “liip_imagine.cache.manager” na ação do controlador e utilizar a função “getBrowserPath” para obter o caminho da imagem manipulada. Em seguida, é possível enviar a imagem para o navegador, utilizando a função “file_get_contents” e definindo os cabeçalhos corretamente.

namespace AppBundleController;

use LiipImagineBundleImagineCacheCacheManager;
use SymfonyBundleFrameworkBundleControllerController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;

class ImageController extends Controller
{
public function indexAction(Request $request, CacheManager $cacheManager)
{
$path = $cacheManager->getBrowserPath('/path/to/image.jpg', 'thumb');
$content = file_get_contents($path);
$response = new Response($content);
$response->headers->set('Content-Type', 'image/jpeg');
return $response;
}
}

Como configurar a cache do LiipImagineBundle?

Para configurar a cache do LiipImagineBundle, é necessário definir o diretório de cache no arquivo de configuração do pacote e garantir que o diretório possua permissões de escrita pelo servidor web. Em seguida, é possível definir o tempo de expiração da cache para cada filtro no mesmo arquivo de configuração.

# app/config/config_liip_imagine.yaml
liip_imagine:
data_loader:
filesystem:
root: %kernel.project_dir%/public
filter_sets:
cache: ~
thumbnail:
quality: 75
filters:
thumbnail: { size: [120, 90], mode: outbound }
sepia:
quality: 75
filters:
sepia: ~
cache: long

Como utilizar o LiipImagineBundle com o Twig?

Para utilizar o LiipImagineBundle com o Twig, é necessário adicionar a extensão “liip_imagine.twig.extension” no arquivo de configuração do Twig e, em seguida, utilizar a função “imagine_filter” para aplicar os filtros na imagem. A função recebe como parâmetro o caminho da imagem original e o nome do filtro que será aplicado.

{% extend '::base.html.twig' %}

{% block content %}
Imagem redimensionada
{% endblock %}

Como manipular imagens armazenadas no banco de dados com o LiipImagineBundle?

Para manipular imagens armazenadas no banco de dados com o LiipImagineBundle, é necessário criar um serviço que implemente a interface DataManagerInterface e que seja capaz de obter a imagem a partir do objeto do banco de dados. Em seguida, é possível utilizar a função “loadFromData” do serviço “liip_imagine.data.manager” para carregar a imagem a partir dos dados.

namespace AppBundleService;

use LiipImagineBundleBinaryBinaryInterface;
use LiipImagineBundleModelFileBinary;
use LiipImagineBundleImagineDataDataManagerInterface;
use AppBundleEntityImagem;

class ImagemDataManager implements DataManagerInterface
{
public function find($id)
{
$imagem = $this->em->getRepository(Imagem::class)->find($id);
return $imagem;
}

public function resolve(BinaryInterface $binary, $filter = null)
{
$fileBinary = new FileBinary($this->getBinaryData($binary));
return $this->imagine->load($fileBinary)->copy();
}

private function getBinaryData(BinaryInterface $binary)
{
$data = $binary->getContent();
return $data;
}
}

Como definir um prefixo para as rotas do LiipImagineBundle?

Para definir um prefixo para as rotas do LiipImagineBundle, é necessário adicionar a opção “base_path” no arquivo de configuração do pacote, definindo o valor do prefixo que deverá ser adicionado às rotas. Em seguida, é necessário limpar o cache do Symfony com o comando “php bin/console cache:clear” na linha de comando.

# app/config/config_liip_imagine.yaml
liip_imagine:
base_path: "/imagens"

Como definir a qualidade de imagem com o LiipImagineBundle?

Para definir a qualidade de imagem com o LiipImagineBundle, é necessário adicionar a opção “quality” no arquivo de configuração do filtro desejado, definindo o valor de qualidade que deverá ser utilizado. É importante ressaltar que a qualidade é definida em uma escala de 0 a 100.

# app/config/config_liip_imagine.yaml
liip_imagine:
filter_sets:
thumbnail:
quality: 75

Como usar o LiipImagineBundle para redimensionar imagens mantendo a proporção?

Para redimensionar imagens mantendo a proporção com o LiipImagineBundle, é necessário utilizar o filtro “resize” com a opção “mode” definida como “outbound”. Esta opção faz com que o filtro respeite a proporção da imagem, gerando uma imagem com dimensões menores ou iguais às definidas.

{% extend '::base.html.twig' %}

{% block content %}
Imagem redimensionada proporcionalmente
{% endblock %}

liip_imagine:
filter_sets:
thumbnail:
quality: 75
filters:
resize:
size: [120, 90]
mode: outbound