israel-nogueira / sweet-thumb
一个简单的类,用于创建缩略图和一些技巧
README
安装 | 使用示例 | 文件转换 | 在浏览器中打印图像 | 圆形缩略图
颜色调色板 | 主色 | 占位符 | 模糊占位符 | 添加文本 | 混合图像 | 处理图像 |
这是一个超级简单的创建缩略图的基类。没有花哨的功能,只有在一个系统/网站上真正有用的功能。
安装
通过 composer 安装。
composer require israel-nogueira/sweet-thumb
使用示例
简单裁剪图像
<?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);
按照您设定的格式裁剪图像
sweet::crop('avatar.png',[0,100,100],false,true);
将高度调整为 100px,宽度按比例调整
sweet::crop('avatar.png',[100,0,100],false,true);
将宽度调整为 100px,高度按比例调整
sweet::crop('avatar.png',[100,100,100],true,false);
按照您设定的格式裁剪图像,但不会调整图像大小
文件转换
图像类型转换。
支持扩展名: .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); ?>
在浏览器中打印图像
简单地返回一个图像并在浏览器中打印它
<?php include "vendor\autoload.php"; use IsraelNogueira\SweetThumb\sweet; sweet::printBrowser(__DIR__.'/original.webp'); ?>
圆形缩略图
裁剪并返回一个圆形缩略图
<?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); ?>
此示例将产生
列出颜色调色板
返回图像中可用的颜色;
注意!此函数遍历图像的每个像素。如果图像很大,可能会导致处理停滞。因此,它适用于特定情况或小图像。
<?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); ?>
此示例将产生类似的结果
Array
(
[0] => Array
(
[0] => 000000
...
[30] => 0c0404
[31] => 0b0303
[32] => 050000
[36] => 090100
[37] => 0f0500
...
...
[6361] => 1f1106
[6367] => 582f0e
[6368] => 623512
)
)
图像主色
返回图像的主色;
<?php include "vendor\autoload.php"; use IsraelNogueira\SweetThumb\sweet; /* |------------------------------------------------------- | COR PRINCIPAL |-------------------------------------------------------- */ $paleta = sweet::corPredominante(__DIR__.'/avatar.jpg'); ?>
此示例将产生类似的结果
Array
(
[0] => Array
(
[0] => 80
[1] => 61
[2] => 58
)
[1] => rgb(80, 61, 58)
)
占位符
返回图像的主色;
<?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.'">'; ?>
这将产生
<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=">
在视觉上看起来像这样
模糊占位符
我们创建了一个用于 SVG 占位符的模糊图像;
将创建一个带有 -lazy.svg
后缀的 SVG 文件,还有一个带有 -lazy.low.svg
后缀的更简单的占位符,仅包含主色。
<?php include "vendor\autoload.php"; use IsraelNogueira\SweetThumb\sweet; /* |------------------------------------------------------- | CRIA BLUR IMAGE |-------------------------------------------------------- */ echo sweet::createLazyLoad(__DIR__.'/avatar.png') ?>
在视觉上看起来像这样
在图像上添加文本
看看如何在图像下方添加文本是多么简单;
<?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' ]); ?>
在视觉上看起来像这样
混合图像
使用此功能可以编程方式混合图像;
<?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'); ?>
在视觉上看起来像这样
处理图像
我们可以使用此功能从单个图像生成多种格式;
<?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); ?>
在视觉上看起来像这样
如果您不想给图像命名,将生成一个随机 HASH。
<?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); ?>
在视觉上看起来像这样