israel-nogueira/sweet-thumb

一个简单的类,用于创建缩略图和一些技巧

v1.0.0 2023-06-06 18:16 UTC

This package is auto-updated.

Last update: 2024-09-06 21:20:40 UTC


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);

?>

在视觉上看起来像这样