| Recommend this page to a friend! |
| Info | Example | Reputation | Support forum | Blog | Links |
| Last Updated | Ratings | Unique User Downloads | Download Rankings | |||||
| 2026-02-10 (12 days ago) | Not yet rated by the users | Total: Not yet counted | Not yet ranked | |||||
| Version | License | PHP version | Categories | |||
| projeto-loja 1.0.0 | MIT/X Consortium ... | 7 | Graphics, E-Commerce, PHP 7, Applicat... |
| Description | Author | |
This package can resize and compress uploaded images. |
In Portuguese:
Por favor, leia esse documento para aprender a instalar e configurar este projeto para armazenamento de dados de produtos de uma loja que tęm imagens.
<?php |
Este documento descreve a arquitetura e as decisoes tecnicas por tras do modulo de upload e compressao de imagens deste projeto. O foco principal e a eficiencia e a experiencia do usuario, transferindo a carga pesada de processamento de imagem do servidor para o dispositivo do cliente (navegador).
Tradicionalmente, uploads de imagens funcionam enviando o arquivo original (muitas vezes com 5MB, 10MB ou mais) para o servidor, que entao processa, redimensiona e comprime a imagem.
Neste projeto, adotamos uma abordagem moderna de pré-processamento no cliente.
A organizacao do projeto separa claramente as responsabilidades, mas mantem uma integracao fluida entre Backend e Frontend:
O projeto utiliza uma classe AssetManager para gerenciar como os scripts sao carregados:
Siga os passos abaixo para configurar o ambiente de desenvolvimento.
Navegue ate a pasta do nucleo da API e instale as bibliotecas PHP:
cd api_core
composer install
Navegue ate a pasta dos arquivos fonte do frontend e instale as ferramentas Node.js:
cd ../frontend_src
npm install
Voce precisara de dois terminais abertos simultaneamente.
Terminal 1 (Build do Frontend em tempo real): Este comando vai monitorar mudancas no JS e atualizar os arquivos na pasta publica.
cd frontend_src
npm run dev
Terminal 2 (Servidor PHP): Inicie o servidor embutido do PHP apontando para a pasta publica.
cd public_html
php -S localhost:8000
Acesse no navegador: http://localhost:8000
Para rodar o projeto em um ambiente de producao (ou simular o comportamento final), voce nao precisa manter o terminal do Node aberto.
Este comando vai processar todos os arquivos JS/CSS, minifica-los e salva-los na pasta public_html/assets.
cd frontend_src
npm run build
Apos o build, o Node.js nao e mais necessario. O PHP detectara automaticamente os arquivos gerados atraves do AssetManager.
cd ../public_html
php -S localhost:8000
Caso voce nao tenha acesso para mudar a pasta raiz do servidor (DocumentRoot) para public_html, voce pode criar um arquivo .htaccess na raiza do projeto com o seguinte conteudo para redirecionar todo o trafego:
Arquivo: /.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^public_html
RewriteRule ^(.*)$ public_html/$1 [L]
</IfModule>
Isso fara com que o site carregue corretamente mesmo se os arquivos estiverem fora da pasta publica padrao.
A logica central reside em dois arquivos JavaScript na pasta frontend_src.
Este e um modulo ES6 puro, agnostico de framework, focado em uma unica responsabilidade: transformar um arquivo bruto em um arquivo otimizado.
Principais Funcionalidades: API Canvas*: Utiliza o elemento canvas HTML5 para renderizar e redimensionar a imagem com alta performance. Algoritmo de Media de Cor (getAverageColor)*: Implementa uma leitura direta dos bytes da imagem para calcular a cor media dominante. Isso e feito amostrando pixels para garantir que a operacao leve apenas alguns milissegundos. Conversao WebP*: Exporta nativamente para o formato WebP, que oferece compressao superior ao JPEG/PNG com menor perda de qualidade. Retorno Rico*: Devolve um objeto contendo metadados valiosos: dimensoes originais vs. finais, tamanho em bytes e a cor hexadecimal extraida.
Este arquivo atua como a camada de controle, ligando a interface do usuario (DOM) a logica de compressao.
Fluxo de Trabalho: 1. Preview Imediato: Mostra a imagem original instantaneamente ao usuario. 2. Processamento Assincrono: Chama a compressao e aguarda o resultado sem travar a interface. 3. Feedback Visual: Exibe a comparacao de tamanho e a cor predominante. 4. Preparacao para Envio: Constroi o FormData anexando o arquivo ja processado (WebP) e nao o original. 5. Envio de Metadados: Envia tambem largura, altura e cor dominante como campos de texto para o backend.
Este modulo serve como um modelo de arquitetura que pode ser replicado em diversas aplicacoes. Ele nao e apenas um script de upload, mas uma solucao completa de tratamento de midia.
O codigo e modular. O componente de compressao pode ser importado em projetos React, Vue, Angular ou React Native.
| File | Role | Description | ||
|---|---|---|---|---|
| Data | Auxiliary data | |||
| Doc. | Documentation | |||
| / | api_core |
| File | Role | Description | ||
|---|---|---|---|---|
| |
Data | Auxiliary data | ||
| |
Data | Auxiliary data | ||
| |
Data | Auxiliary data | ||
| |
Class | Class source | ||
| |
Data | Auxiliary data | ||
| / | api_core | / | src |
| File | Role | Description |
|---|---|---|
| |
Class | Class source |
| |
Class | Class source |
| |
Class | Class source |
| / | frontend_src |
| File | Role | Description |
|---|---|---|
| |
Data | Auxiliary data |
| |
Doc. | Documentation |
| |
Data | Auxiliary data |
| |
Data | Auxiliary data |
| |
Data | Auxiliary data |
| |
Data | Auxiliary data |
| / | public_html |
| / | public_html | / | assets | / | assets |
| File | Role | Description |
|---|---|---|
| |
Data | Auxiliary data |
| The PHP Classes site has supported package installation using the Composer tool since 2013, as you may verify by reading this instructions page. |
| Version Control | Unique User Downloads | |||||||
| 100% |
|
| Applications that use this package |
If you know an application of this package, send a message to the author to add a link here.