Jump to content
felipe_chipset

compactar e otimizar exibição de imagens pelo php

Recommended Posts

Fala galera, gostaria de tirar uma dúvida teórica (WEB)

Qual vocês consideram a melhor maneira de otimizar imagens de um site para web dado o seguinte Cenário.

Zend 3 ou Cakephp3
S3 (para armazenar as imagens)
 

O cliente sobe as imagens (no tamanho que ele quiser)
Eu tenho que diminuir o tamanho dessas imagens por script (para o site não demorar 30 segundos para abrir no browser a imagens de upload quando o site for aberto).

Minhas dúvidas são.. 

O que vocês utilizariam para melhorar a performance ao carregar essas imagens de forma mais rápida possível?
Qual processos utilizariam para diminuir o tamanho das imagens (biblioteca ou qualquer coisa do tipo em PHP)?

Share this post


Link to post
Share on other sites

WideImage, apesar de antigo, é ainda bem completo. Qualquer coisa, olhe outros projetos: http://wideimage.sourceforge.net/similar-projects/

 

O Imagine parece ser bem interessante também.

Share this post


Link to post
Share on other sites

Então, eu usei o wideImage porem não gostei muito do resultado, não sei exatamente qual lib ele utiliza para compactar as imagens só sei que o tamanho delas não ficou tão compactado assim!

Edited by Gabriel Heming
remover o quote

Share this post


Link to post
Share on other sites

WideImage utiliza a biblioteca GD2. Tem que entender que WideImage não é exclusivamente uma biblioteca de compactação e sim de manipulação. Uma das manipulação é a compressão, mas ela deve ser informada no processamento da imagem.

 

Mostre-nos o código que utlizou e o antes/depois do tamanho da imagem.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Motta
      Prezados ,
      Onde tenho um Banco de Imagens de ícones Público disponível para dowmload.
       
      Coisa básica
    • By ernestovm
      Seguinte. Eu não, mas acho que TODOS os desenvolvedores estão no mato sem cachorro no que se refere a esse problemão, que é a atualização do site lá no browser do seu usuário/visitante. Seja no acesso pelo computador e, pior ainda, pelo celular.
      Quando altero o arquivo stylo.css ou alguma imagem o browser, principlmente o Google Chrome NÃO ATUALIZA. No computador, só atualiza se eu teclar CTRL+F5, mas se pensarmos no visitante não dá né? "Nivelando por baixo", imagine aquele visitante do seu site que não entende bulufas... Vou ter que colocar no site um aviso pra todo mundo apertar CTRL+F5 para atualizar a página? Quando? Sempre? Um INFERNO.
      E quanto ao acesso do visitante pelo celular? Pior ainda.
      Então estou à procura de uma solução transparente ao usuário. No que se refere às imagens, encontrei soluções razoáveis, mas quanto ao arquivo CSS, nada encontrei.
      Se alguém souber de alguma "mágica" que resolva esse problema, compartilhe. TODOS os demais desenvolvedores agradecem.
      Obrigado
       
    • By Davi Araújo
      Boa tarde, amigos
       
      Baixei os arquivos de um site WP, exportei o banco de dados e subi em outra hospedagem (mesmo domínio), mas agora as imagens não aparecem
       
      O que devo fazer? Alguma dica? 
       
      http://picanhadojonas.com.br/
    • By reberthkss
      Bom dia!
       
      Eu tenho um programa escrito em C e nele estou utilizando funções, e para ter boa prática, eu quero separar as funções do programa principal.
      Então to querendo criar uma header e outro arquivo .c para colocar as funções. Ai eu fico com:
       
      Arquivo .h "Funcoes.h"; Arquivo .c "Funcoes.c" Arquivo .c "main.c"  
      Eu tentei fazer o esquema acima, mas quando compilo o arquivo main.c o compilador me retorna um erro (Anexo I);
       
       

      Na minha opinião era pra dar certo, pois fiz igual um exemplo que eu tenho aqui (o exemplo tá em c++)...
       
      o que eu to deixando passar pra não ter dado certo?
      // FUNCOES.H #pragma once #include <stdio.h> #include <math.h> extern int assentoC[23]; extern int assentoJ[23]; extern float valort; void limpavetor(int *v1,int*v2); //FUNCOES.C #include "funcoes.h" void limparvetor(int *v1,int *v2){ int i; for(i=0;i<23;i++){ *(v1+i)=0; *(v2+i)=0; } } //MAIN.C #include<stdio.h> #include<math.h> #include <string.h> #include "funcoes.h" int assentoC[23]; int assentoJ[23]; float valort=0; char* verStatusAss(int *assento) {if(*assento>0) return "OCUPADO"; else return "DISPONIVEL"; } void comprar() { int i; int opt=0; int qt=0; int ass[23]; int confirma=0; int menu=0; int contDJ=1; int contDC=1; int destino=0; int cont=0; float valor1=28.0,valor2=159.0,valor3=188.0; printf("\t\t MENU\n"); printf("Destino: [1] Sao Paulo [2] Curitiba [3] Florianopolis: "); scanf("%i",&destino); printf("\n"); printf("voce quer comprar assentos em/ou: \n\n"); for(i=0;i<23;i++){ if(assentoC[i]==0){ contDC=0; } } for(i=0;i<23;i++){ if(assentoJ[i]==0){ contDJ=0; } } printf("ASSENTO DISPONIVEIS EM\n"); if(contDJ==0) printf("\n1 - Janela\n\n"); if(contDC==0) printf("2 - Corredor\n"); printf("\n\n\n3 - Voltar para menu principal\n"); scanf("%i",&opt); switch(opt){ case 1: printf("[JANELA] Quantos assentos?:"); scanf("%i",&qt); printf("\n"); printf("[JANELA] Qual/Quais assento?: "); for(i=0;i<qt;i++){ cont=0; while(cont<1){ printf("[JANELA] Bilhete: %i. Assento: ",i+1); scanf("%i",&ass[i]); printf("\n"); if(assentoJ[ass[i]]!=0){ printf("Assento OCUPADO. Escolha outro assento! "); }else { cont++; } } } printf("\t\t RESUMO\n"); printf("Posicao: JANELA \n"); for(i=0;i<qt;i++){ printf("Bilhete: %i.\t Assento: %i\n",i+1,ass[i]); } printf("CONFIRMA?? "); printf("[1] SIM [0] NAO:"); scanf("%i",&confirma); if(confirma!=0){ for(i=0;i<qt;i++) { assentoJ[ass[i]]=1; switch(destino) { case 1: valort=valort+(qt*valor1); break; case 2: valort=valort+(qt*valor2); break; case 3: valort=valort+(qt*valor3); break; } } } else { printf("VENDA NAO EFETUADA! VOLTANDO AO MENU PRINCIPAL..."); } break; case 2: printf("[CORREDOR] Quantos assentos?:"); scanf("%i",&qt); printf("\n"); printf("[CORREDOR] Qual/Quais assento?: "); for(i=0;i<qt;i++){ printf("[CORREDOR] Bilhete: %i. Assento: ",i+1); scanf("%i",&ass[i]); printf("\n"); } printf("\t\t RESUMO\n"); printf("Posicao: CORREDOR \n"); for(i=0;i<qt;i++){ printf("Bilhete: %i.\t Assento: %i\n",i+1,ass[i]); } printf("CONFIRMA?? "); printf("[1] SIM [0] NAO:"); scanf("%i",&confirma); if(confirma!=0){ for(i=0;i<qt;i++) { assentoJ[ass[i]]=1; } } else { printf("VENDA NAO EFETUADA! VOLTANDO AO MENU PRINCIPAL..."); } break; case 3: break; } } int menuprincipal() { int opt=0; printf("\t\t MENU PRINCIPAL\n\n"); printf("\t\t 1 - COMPRAR ASSENTO\n"); printf("\t\t 2 - VERIFICAR ASSENTOS\n"); printf("\t\t 3 - VER MAPA DO TRAJETO\n"); printf("\t\t 4 - VER LUCRO\n"); printf("\t\t 5 - SAIR\n"); printf("\t\t Digite uma opcao: "); scanf("%i",&opt); return opt; } int menusecundario() { int opt=0; printf("1 - COMPRAR ASSENTO // "); printf("2 - VERIFICAR ASSENTOS \n"); printf("3 - VER MAPA DO TRAJETO // "); printf("4 - VER LUCRO // "); printf("5 - VOLTAR PARA MENU PRINCIPAL\n"); printf("6 - SAIR \n"); printf("Digite uma opcao: "); scanf("%i",&opt); return opt; } void verAss() { int i; int opt=0; printf("\t\t MENU\n"); printf("voce quer ver assentos em/ou: \n"); printf("1 - Janela\n"); printf("2 - Corredor\n"); printf("3 - Todos\n"); printf("Digite uma opcao: "); scanf("%i",&opt); printf("\n"); for(i=0;i<23;i++) { switch(opt){ case 1: printf("[JANELA] Assento %i. STATUS: %s \n",i, verStatusAss(&assentoJ[i])); break; case 2: printf("[CORREDOR] Assento %i. STATUS: %s \n",i,verStatusAss(&assentoC[i])); break; case 3: printf("[JANELA] Assento %i. STATUS: %s \t [CORREDOR] Assento %i. STATUS: %s\n",i,verStatusAss(&assentoJ[i]),i,verStatusAss(&assentoC[i])); break; } } } int voltarMenuP(int *menu) { int menu2; printf("APERTE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL"); scanf("%i",&menu2); if(menu2!=0) *menu=1; return menu; } int acao(int opt,int * gameover) { int menu=0; while(!menu){ switch(opt){ case 1: comprar(); voltarMenuP(&menu); break; // VERIFICAR ASSENTOS case 2: verAss(); voltarMenuP(&menu); break; // verMap() case 3: printf("\t\t\MAPA\n"); printf("SJC\t->\t Sao Paulo\t->\t Curitiba\t->\t Florianopolis\n"); voltarMenuP(&menu); break; // verLuc() case 4: printf("Valor total: %.2f\n",valort); voltarMenuP(&menu); break; // exit() case 5: *gameover=1; return *gameover; break; } } } int main(){ int gameover=0; int opt; int i=0; limparvetor(&assentoC,&assentoJ); while(!gameover){ // MENU PRINCIPAL // -- func menuprincipal() acao(opt=menuprincipal(),&gameover); } return 0; }  
    • By Ana Gauna
      Eu já tentei diversas vezes, mas ainda não consegui fazer funcionar.  Inclusive já alterei o arquivo .htaccess mas isso não funcionou.  Estou tentando criar um bloqueio em página de site online, para bloquear o download de imagens, bloquear o download de fotografias.  Estou tentando também criar o bloqueio de impressão da tela de um site, para fazer o control p parar de funcionar em determinada página do site.    Vi na internet sites que tem isso funcionando direito.  Eu ainda não consegui criar.  Alguém sabe como fazer?   Eu sei um pouco de PHP, este mês comprei 3 livros novos de PHP que estou estudando para tentar me ajudar nas minhas dúvidas...
      Boa noite
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.