israel-nogueira / sweet-thumb
Uma classe simples para criação de miniaturas e mais alguns truques
README
Instalação |
Exemplos de Uso |
Conversão |
Print no browser |
Thumb Redondo
Paleta de Cores |
Cor predominante |
Placeholder |
Placeholder com Blur |
Add Textos |
Mesclando imagens |
uma imagens |
Esta é uma super classe super simples para criação de miniaturas. Sem fru-fru, apenas o que realmente é útil em um sistema/website.
Instalação
Instale via composer.
composer require israel-nogueira/sweet-thumb
EXEMPLOS DE USO
Crop simples de uma imagem
<?php include "vendor\autoload.php"; use IsraelNogueira\SweetThumb\sweet; /* |-------------------------------- | Parâmetros: | @SOURCE => Caminho da imagem | @SIZE = Array com Largura e Altura (ex: [w,h] ) | @SUFIX => Será adicionado as medidas da imagem ao final do nome (ex: avatar-{w}-{h}-{q}.png) | @CROP = Bolean, habilita o crope da imagem | @RESIZE = Habilita se quer redimencionar a imagem | @QUALIDADE = 1 - 100 | @SHOW_BROSWER = Ao invés de salvar a imagem, retorna a imagem para o browser |-------------------------------- */ sweet::crop( $_IMG=null, $sufix=true, $size=[50,50], $crop=true, $resize=true, $showBrowser=false ); /* |-------------------------------- | EXEMPLO PRÁTICO |-------------------------------- */ $_IMAGEM = __DIR__.'/avatar.jpg'; sweet::crop($_IMAGEM,[100,100],true,true,true,100); ?>
sweet::crop('avatar.png',[100,100,100],true,true);
Cropa a imagem no formato que você definir:
sweet::crop('avatar.png',[0,100,100],false,true);
Redimencionará a altura para 100px e a largura proporcional:
sweet::crop('avatar.png',[100,0,100],false,true);
Redimencionará a largura para 100px e a altura proporcional:
sweet::crop('avatar.png',[100,100,100],true,false);
Cropa a imagem no formato que você definir porém sem redimencionar a imagm:
CONVERSÃO DE ARQUIVOS
Conversão de tipos de imagem.
Comporta as exetensões: .jpg
, .gif
, .webp
, .png
.
<?php include "vendor\autoload.php"; use IsraelNogueira\SweetThumb\sweet; /* |-------------------------------- | CONVERTE PARA JPG |-------------------------------- */ sweet::img2jpg(__DIR__.'/avatar.png',100); /* |-------------------------------- | CONVERTE PARA GIF |-------------------------------- */ sweet::img2gif(__DIR__.'/avatar.png',100); /* |-------------------------------- | CONVERTE PARA WEBP |-------------------------------- */ sweet::img2webp(__DIR__.'/avatar.png',100); /* |-------------------------------- | CONVERTE PARA PNG |-------------------------------- */ sweet::img2png(__DIR__.'/avatar.jpg',9); ?>
PRINT IMAGEM NO BROWSER
Simplesmente retorna uma imagem e printa no browser:
<?php include "vendor\autoload.php"; use IsraelNogueira\SweetThumb\sweet; sweet::printBrowser(__DIR__.'/original.webp'); ?>
THUMB REDONDO
Cropa e retorna uma thumb redonda
<?php include "vendor\autoload.php"; use IsraelNogueira\SweetThumb\sweet; /* |------------------------------------------------------- | CONVERTE PARA GIF | @PARAM 1: Path da imagem | @PARAM 2: Tamanho da thumb | @PARAM 3: true:Salva um arquivo local, false: retorna o objeto |-------------------------------------------------------- */ sweet::thumbRedondo(__DIR__.'/avatar.jpg', 180,true); ?>
Este exemplo resultará em:
LISTANDO PALETA DE CORES
Nos retorna as cores disponiveis em uma imagem;
ATENÇÃO! Essa função percorre cada pixel de uma imagem. Se a imagem for muito grande, pode travar o processamento Portanto, é viável para casos expecíficos ou imagens pequenas
<?php include "vendor\autoload.php"; use IsraelNogueira\SweetThumb\sweet; /* |------------------------------------------------------- | CAPTURA PALETA DE CORES |-------------------------------------------------------- */ $paleta = sweet::getColor(__DIR__.'/avatar.jpg'); /* |------------------------------------------------------- | ORDENA A PALETA DE CORES |-------------------------------------------------------- */ $Ordem = sweet::sortByColor($paleta); ?>
Este exemplo resultará em algo parecido com isso:
Array
(
[0] => Array
(
[0] => 000000
...
[30] => 0c0404
[31] => 0b0303
[32] => 050000
[36] => 090100
[37] => 0f0500
...
...
[6361] => 1f1106
[6367] => 582f0e
[6368] => 623512
)
)
COR PREDOMINANTE DE UMA IMAGEM
Nos retorna a cor principal de uma imagem;
<?php include "vendor\autoload.php"; use IsraelNogueira\SweetThumb\sweet; /* |------------------------------------------------------- | COR PRINCIPAL |-------------------------------------------------------- */ $paleta = sweet::corPredominante(__DIR__.'/avatar.jpg'); ?>
Este exemplo resultará em algo parecido com isso:
Array
(
[0] => Array
(
[0] => 80
[1] => 61
[2] => 58
)
[1] => rgb(80, 61, 58)
)
PLACEHOLDER
Nos retorna a cor principal de uma imagem;
<?php include "vendor\autoload.php"; use IsraelNogueira\SweetThumb\sweet; /* |------------------------------------------------------- | COR PRINCIPAL |-------------------------------------------------------- */ echo sweet::placeholderSVG([ 'SIZE' =>'250x100', 'TEXT' =>'Olá mundo!', 'BG' =>'000000', 'COLOR' =>'FFFFFF', 'ID' =>'demonstracao', 'CLASS' =>'avatar', 'FONTSIZE'=>30, 'FONTFAMILY'=>__DIR__.'/fonte.ttf' ]); /* |------------------------------------------------------- | OU SE QUISER INSERIR EM UMA TAG DE IMAGEM |-------------------------------------------------------- */ $placeholder = sweet::placeholderBase64([ 'SIZE' =>'250x100', 'TEXT' =>'Olá mundo!', 'BG' =>'000000', 'COLOR' =>'FFFFFF', 'ID' =>'demonstracao', 'CLASS' =>'avatar', 'FONTSIZE'=>30, 'FONTFAMILY'=>__DIR__.'/fonte.ttf' ]); echo ' <img src="'.$placeholder.'">'; ?>
Que nos resultará em:
<svg xmlns="http://www.w3.org/2000/svg" id="demonstracao" class="avatar" width="250" height="100" viewBox="0 0 250 100"> <rect fill="#000000" width="100%" height="100%"></rect> <text fill="#FFFFFF" font-family="sans-serif" font-size="30" dy="0" font-weight="bold" x="50%" y="50%" text-anchor="middle" dominant-baseline="middle"> Olá mundo! </text> </svg> <img src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJkZW1vbnN0cmFjYW8iIGNsYXNzPSJhdmF0YXIiIHdpZHRoPSIyNTAiIGhlaWdodD0iMTAwIiB2aWV3Qm94PSIwIDAgMjUwIDEwMCI+DQoJCQkJCQkJPHJlY3QgZmlsbD0iIzAwMDAwMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIvPg0KCQkJCQkJCTx0ZXh0IA0KCQkJCQkJCQlmaWxsPSIjRkZGRkZGIiANCgkJCQkJCQkJZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIA0KCQkJCQkJCQlmb250LXNpemU9IjMwIiANCgkJCQkJCQkJZHk9IjAiIA0KCQkJCQkJCQlmb250LXdlaWdodD0iYm9sZCIgDQoJCQkJCQkJCXg9IjUwJSIgDQoJCQkJCQkJCXk9IjUwJSIgDQoJCQkJCQkJCXRleHQtYW5jaG9yPSJtaWRkbGUiDQoJCQkJCQkJCWRvbWluYW50LWJhc2VsaW5lPSJtaWRkbGUiDQoJCQkJCQkJPg0KCQkJCQkJCQlPbMOhIG11bmRvIQ0KCQkJCQkJCTwvdGV4dD4gDQoJCQkJCQk8L3N2Zz4=">
Que visualmente é ficaria assim:
PLACEHOLDER BLUR DE UMA IMAGEM
Aqui criamos uma imagem em BLUR para placeholder em SVG;
Será criado um arquivo SVG com o sufixo -lazy.svg
Tambem um placeholder mais simples, com apenas a cor predominante com o sufixo -lazy.low.svg
<?php include "vendor\autoload.php"; use IsraelNogueira\SweetThumb\sweet; /* |------------------------------------------------------- | CRIA BLUR IMAGE |-------------------------------------------------------- */ echo sweet::createLazyLoad(__DIR__.'/avatar.png') ?>
Que visualmente é ficaria assim:
ADD TEXTO POR CIMA DE UMA IMAGEM
Veja como é simples adicionar um texto sob uma imagem;
<?php include "vendor\autoload.php"; use IsraelNogueira\SweetThumb\sweet; /* |------------------------------------------------------- | ADICIONA TEXTO |-------------------------------------------------------- */ sweet::addTexto([ 'ORIGINAL' => __DIR__.'/bg.png', 'FINAL' => __DIR__.'/bg_texto.png', 'FONT_SIZE' => 30, 'TEXT_Y' => 'center'; 'TEXT_X' => 'center'; 'TEXTO' => 'PROMOÇÃO AGORA!'; 'FONTE' => __DIR__.'/FONTE.ttf', 'COR' => '#FFFFFF' ]); ?>
Que visualmente é ficaria assim:
MESCLANDO IMAGENS
Com essa função poderemos mesclar imagens programaticamente;
<?php include "vendor\autoload.php"; use IsraelNogueira\SweetThumb\sweet; /* |------------------------------------------------------- | MESCLA O AVATAR |-------------------------------------------------------- */ sweet::mesclarIMG(__DIR__.'/bg.png',__DIR__.'/mulher.png',22,22,__DIR__.'/bg1.png'); /* |------------------------------------------------------- | MESCLA O ICONE DO SONIC |-------------------------------------------------------- */ sweet::mesclarIMG(__DIR__.'/bg1.png',__DIR__.'/sonic.png',230,100,__DIR__.'/banner.png'); ?>
Que visualmente é ficaria assim:
PROCESSA UMA IMAGEM
Podemos utilizar essa função para gerar vários formatos de uma só imagem;
<?php include "vendor\autoload.php"; use IsraelNogueira\SweetThumb\sweet; /* |----------------------------------------------------- | FAZ O PROCESSO COMPLETO |----------------------------------------------------- | | @_ARQUIVO: string:PathFile | array[PathFile,HashName] | @_SIZES: [w|h,[w,h],[w,h],[w,h,q]] | @_ROOT_SIZE: tamanho maximo do original | |----------------------------------------------------- */ sweet::processaImagem([__DIR__.'/imagens/avatar.png','nova-imagem'],[50,[100,150,100],[200,250,100],300],1300); ?>
Que visualmente é ficaria assim:
Caso não queira dar um bnome pra imagem, será gerado uma HASH randômica;
<?php include "vendor\autoload.php"; use IsraelNogueira\SweetThumb\sweet; /* |----------------------------------------------------- | FAZ O PROCESSO COMPLETO |----------------------------------------------------- | | @_ARQUIVO: string:PathFile | array[PathFile,HashName] | @_SIZES: [w|h,[w,h],[w,h],[w,h,q]] | @_ROOT_SIZE: tamanho maximo do original | |----------------------------------------------------- */ sweet::processaImagem(__DIR__.'/avatar.png',[50,[200,100,100],[200,100,100],300],1300); ?>
Que visualmente é ficaria assim: