GutoDPB 0 Denunciar post Postado Janeiro 25, 2012 Fala galera! Ainda não estudei essa biblioteca, mas gostaria de saber de quem ja trabalha com ela, se simplesmente passando a imagem pela função 'imagecopyresized', o script muda o tamanho em KB da imagem? Ou se diminuindo 1px somente também surte efeito de comprimir bastante o jpg. valeu. Compartilhar este post Link para o post Compartilhar em outros sites
Henrique Barcelos 290 Denunciar post Postado Janeiro 25, 2012 Não entendi a sua dúvida... explique um pouco melhor... Compartilhar este post Link para o post Compartilhar em outros sites
Erick Plant 8 Denunciar post Postado Janeiro 25, 2012 você só quer redimensionar a imagem, quando salvar? Compartilhar este post Link para o post Compartilhar em outros sites
GutoDPB 0 Denunciar post Postado Janeiro 25, 2012 não quero redimensionar a imagem em si, o que me importa é diminuir o tamanho em MB, pois as imagens de um site que estou trabalhando são grandes quando enviadas. se o php compacta bem a imagem Compartilhar este post Link para o post Compartilhar em outros sites
Prog 183 Denunciar post Postado Janeiro 25, 2012 A compressão de arquivos JPG esta relacionado a qualidade, ou seja, se você fizer um resize sem de fato alterar o tamanho ou a taxa de compressão, provavelmente nada será alterado no tamanho do arquivo. Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Janeiro 25, 2012 A compressão de arquivos JPG esta relacionado a qualidade, ou seja, se você fizer um resize sem de fato alterar o tamanho ou a taxa de compressão, provavelmente nada será alterado no tamanho do arquivo. Peraí, Prog. Fazer um resize sem alterar o tamanho não é possível. Ou é? :ermm: Enfim... Sempre que você fizer um redimensionamento diminuindo a imagem, na maioria das vezes a imagem resultante terá um tamanho menor. É a Teoria não oficial dos Pixels: Quanto menor a quantidade de Pixels que formam uma imagem, menor será o seu tamanho. Porém, experimentos (não sei de quem e nem lembro de quando) mostraram que existe diferença de peso entre pixels também. Ao que parece algumas cores são mais leves do que outras. Até que ponto isso é verdade eu não sei. E há ainda, como Prog disse, a questão da compressibilidade do algoritmo utilizado para a tarefa. Dos suportados pelo PHP o JPG tem a melhor compressibilidade, mas usá-la ao extremo danificará tremendamente suas fotos. Designers! Apresentem-se! :lol: Mas é tudo uma questão de lógica. Não importa o quão boa esteja uma imagem, se você reduzi-la e ajustar para 1% de qualidade vai ficar menor? Vai. Mas a imagem será destruída. mesmo que o percentual usado pelo algoritmo escolhido se baseie na qualidade original da foto, o resultado será ruim. 1% da qualidade de uma foto panorâmica feita com uma câmera de 10Gbps é muito? Sim, é. Mas lembre que ela será aplicada na mesma foto, logo, não é nada. Mas o mais importante é que você não deveria usar a GD para isso. Não que ela não seja boa, mas você dificilmente terá resultados tão bons quanto você poderia ter com um editor profissional. Pior. O fato de você deixar "escapar", propositalmente ou não, um "MB", poderia, inclusive, ser um problema para o servidor, quando e se online, já que as funções da GD são conhecidas por serem bem "fominhas", tanto em processamento quanto em memória. Compartilhar este post Link para o post Compartilhar em outros sites
Will Fernando 2 Denunciar post Postado Janeiro 25, 2012 concordo com o bruno, aquela ideia de diminui o peso da imagem redimencionando e talz atraves da gd, eu ja fiz no passado e não deu muito certo, fica um processo lento e frequentemente da erro a imagem fica toda em branco. tem aqueles javascript nos sites que na hora que o cliente seleciona a imagem ele tras uma tela bunitinha pra recorta e depois ja redimenciona para um tamanho padrão e tal, não sei como funciona teria que pesquisa mas acho uma solucao bacana :) valww P.s: Nesse site tem http://pt.gravatar.com/ Compartilhar este post Link para o post Compartilhar em outros sites
Henrique Barcelos 290 Denunciar post Postado Janeiro 25, 2012 Calma lá, vamos por alguns pingos nos "i"s... Lá nos primórdios da computação o único tipo de imagem existente eram os BITMAPS, traduzindo literalmente "mapas de bits". Até hoje essas imagens existem (extensão ".bmp"). Do que consiste uma imagem bitmap? As cores em um monitor são todas representadas por uma combinação de 3 cores principais: Vermelho (Red), Verde (Green) e Azul (Blue), o famigerado sistema RGB. Em um bitmap padrão, de 8 bits, cada componente da cor pode assumir valores de 0 a 255, sendo que 0 significa menos intenso e 255 mais intenso. A representação dessa imagem é bem simples: consiste de um array de 6 dimensões, 2 para cada cor, mais ou menos assim. Então, para cada pixel na imagem, existem 3 entradas nesse "array", um para computar o valor do vermelho, um para o valor do azul, e um para o valor do verde. Mesmo que a imagem inteira seja composta de pixels iguais, o peso será o mesmo. Imagine uma imagem com 100 x 100 px. São 10000 px² de área. Cada pixel precisa de 3 entradas, que na verdade é um valor inteiro. Inteiros normalmente possuem 4 bytes, então o tamanho dessa imagem será: 3 * 4 * 100 * 100 = 120000 O que dá aproximadamente 117kB. Se a imagem for TODA preta, em tese, o tamanho seria o mesmo. Hoje em dia, mesmo para imagens BMP, alguma compressão mínima é feita. Porém, experimentos (não sei de quem e nem lembro de quando) mostraram que existe diferença de peso entre pixels também. Ao que parece algumas cores são mais leves do que outras. Até que ponto isso é verdade eu não sei. Não, todas as cores tem o mesmo "peso". O que muda é o que eu explico a seguir. Entretanto, imagine uma imagem 100 x 100 px toda preta. A representação do pixel superior é idêntica a todos os outros pixels, então por que armazenar uma entrada para 3 cores para TODOS os pixels se elas são iguais? Esse é o tipo mais básico de compressão: repetir pixels iguais. Normalmente divide-se a imagem em vários pedaços e tenta-se identificar quais pixels são iguais ou mesmo "parecidos". Apenas uma informação é armazenada, o restante é apenas uma repetição. Esse processo normalmente é iterativo, parte da imagem toda e vai reduzindo o tamanho dos pedaços até chegar no pixel unitário. A compressão JPEG explora também algumas limitações do olho humano. Há dois fatores nas imagens digitais que tornam a compressão possível. O primeiro é o fator repetição. O segundo é a invisibilidade. A fotografia digital usa ambas as formas. * Repetição (Compressão reversível): certos padrões nas cores desenvolvem-se ao longo de uma determinada fotografia. Há tipos de compressão que tiram proveito dos padrões repetidos. Infelizmente, a redução do tamanho do arquivo não é muito grande. * Invisibilidade (Compressão irreversível): com este principio consegue-se uma compressão maior que com o sistema reversível. Fotografias digitais são registros de informações de uma imagem, que evidentemente ocupam espaço, sendo que muitos destes dados não são reconhecidos facilmente pelo olho humano, ou são invisíveis, portanto, sem importância. O olho é muito sensível a variações de brilho e proporcionalmente pouco sensível a variações de cor, especialmente às das freqüências mais altas. Algumas rotinas de compressão tiram proveito deste fator para descartar informações sem sentido. JPEG refere-se apenas a uma família de algoritmos de compressão que utiliza o método da repetição e da invisibilidade. A compressão por JPEG trabalha em três fases principais: 1. Transformação: formatação dos dados da imagem que expressam a variação de cor e do brilho. Este passo é preparatório é crítico para o próximo. 2. Quantificação: é o passo que de fato descarta alguns dados para definir uma imagem menor. A imagem inteira é analisada por áreas de 8 x 8 pixels, que compõem blocos de 64 pixels cada. Por um processo matemático complexo, as variações de cor encontradas nestes blocos são calculadas em uma média, de forma que menos dados são necessários para expressar os valores no bloco (simplificação). 3. Codificação: finalmente, um passo de codificação que usa um processo semelhante à compressão reversível é aplicado aos dados, para compactar ainda mais. Quando o arquivo for aberto, o processo será invertido, recriando-se uma imagem que será semelhante à original, quando vista por olhos humanos. Esta manobra necessita de um tempo, geralmente muito curto, imperceptível a nós humanos. No caso do JPEG, é difícil predizer qual será o tamanho do arquivo depois da compressão, pois dependerá do conteúdo da imagem, sobretudo da quantia de detalhes capturados. Por exemplo, uma fotografia de uma paisagem bem vazia terá como resultado um arquivo JPEG pequeno, outra com uma paisagem cheia de detalhes, como folhagens, terá um arquivo maior, pois neste caso, o JPEG conseguirá menor compressão. É aí que está: não existem cores "mais pesadas" que outras, a diferença entre o tamanho de arquivos JPEG se dá exclusivamente pela quantidade de variação de cores. O arquivo gerado é em média 10x menor que o original, podendo chegar a uma compressão de 20:1. Em imagens em escala de cinza, a compressão é menor, pois o JPEG atua principalmente nas cores, não no brilho da imagem. Peraí, Prog. Fazer um resize sem alterar o tamanho não é possível. Ou é? É possível, basta alterar a qualidade da compressão JPEG, que vai de 0 a 100... Eu recomendo não utilizar abaixo de 60... Compartilhar este post Link para o post Compartilhar em outros sites
Prog 183 Denunciar post Postado Janeiro 25, 2012 Porém, no caso dele, quer pegar uma imagem que já esta em formato JPEG e diminuir o espaço ocupado. Alguém tem alguma opinião sobre o PNG? Já fiz experiências e tive resultados melhores. Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Janeiro 25, 2012 Eita, olha o João Jr. :lol: Excelente explicação, eu particularmente só faria uma consideração quanto à última frase, citada a partir da minha. Eu vejo que um resize no qual não se altera o tamanho e sim a taxa de compressão, não é um resize, e sim um resample. Compartilhar este post Link para o post Compartilhar em outros sites
Henrique Barcelos 290 Denunciar post Postado Janeiro 26, 2012 Eita, olha o João Jr. Vamos com calma, com muuuuuita calma... hehe... Na verdade, resample pode ser traduzido como "reamostrar". Você não usa imagecopyresized da GD pois ela deteriora a imagem, você usa imagecopyresampled, que aplica um algoritmo de redução bonitinho. O que estou querendo dizer é que um redimensionamento também é um resample... Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Janeiro 26, 2012 Talvez meu conceito esteja errado, mas pela sua explicação acabou reforçando ainda mais meu pensamento, pois se estamos criando uma nova amostra de uma imagem sem tocar em suas dimensões, temos um resample. P.S.: Eu havia esquecido o significado de resample, valeu. :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites