que pode ser em kB ou em percentual. Por exemplo, temos uma imagem de 13kB e queremos que o programa a otimize para que tenha 6kB. Neste caso, executamos desta forma:$ jpegoptim -S6 paisagem.jpgNote que o programa vai tentar fazer a melhor otimizacao possivel, mas manter o arquivo com mais de 6kB. Quanto mais otimizacoes o programa precisar fazer para chegar ao tamanho esperado, mais distorcidas ficam as cores da imagem. Portanto, e uma forma util de se chamar o programa quando voce realmente espera que o tamanho do arquivo nao seja muito superior a um determinado valor.Para reduzir o tamanho do arquivo com base em um percentual, basta usar especificar o valor seguido de "%". Por exemplo, se queremos reduzir o tamanho de uma imagem para pelo menos 80% de seu tamanho original, fazemos assim:$ jpegoptim -S80% paisagem.jpgOs exemplos apresentados ate aqui do jpegoptim fazem com que o arquivo seja sobrescrito. Para que voce consiga gerar o arquivo otimizado com outro nome, voce pode fazer desta forma:$ jpegoptim -m85 -f --stdout paisagem.jpg > paisagem.min.jpgMinificacao de arquivos HTMLA minificacao de arquivos HTML envolve basicamente a remocao de espacos e quebras de linha desnecessarios. O problema, no entanto, e que existem algumas tags em que a quantidade de espacos e quebras de linha inseridos dentro delas afetam o layout do elemento. Por exemplo, a tag <pre>. Porem, isso nao e exclusividade desta tag, pois qualquer elemento que possua estilo CSS cuja propriedade white-space tenha valor pre, pre-line ou pre-wrap tambem serao afetados pela quantidade de espacos e quebras de linha.Nao conheco um programa que faca a minificacao de arquivos HTML, mas voce pode faze-lo com uma expressao regular simples como essa (lembrando que ela vai remover espacos e quebras de linha, mesmo de elementos como o <pre>):$html = preg_replace('/(\s)\s+/m', '$1', $html);Portanto, se voce trabalha com MVC (ou pelo menos separa a camada de visualizacao da camada de logica da aplicacao), entao pode aplicar essa expressao regular para transformar o conteudo de uma string que tem um HTML em uma versao minificada.A expressao regular que mostrei mantem as quebras de linha do arquivo (desde que o caractere anterior a quebra de linha seja um espaco ou outra quebra de linha). Porem, em muitos casos, a quebra de linha tambem nao afeta o layout. Por exemplo, os dois codigos HTML abaixo produzem o mesmo resultado visual:<p>Primeiro paragrafo</p><p>Segundo paragrafo</p><p>Primeiro paragrafo</p><p>Segundo paragrafo</p>Isso acontece porque a tag <p> (paragrafo) e um elemento de bloco (display=block). Porem, esta regra nao vale para elementos inline (como as tags <a>, <strong>, <em>, <b>, <i>, <span>, etc). Portanto, os codigos abaixo NAO produzem o mesmo resultado visual:<strong>Oi</strong><strong>Ola</strong><strong>Oi</strong><strong>Ola</strong>No primeiro exemplo sera exibido "Oi Ola" com um espaco entre eles. No segundo exemplo sera exibido "OiOla" sem nenhum espaco entre eles. Portanto, e preciso cautela para remover as quebras de linha.A principio, podemos rodar essa outra instrucao para remover todos os espacos do documento:$html = strtr($html, array("\r" => '', "\n" => ''));Porem, voce vai precisar colocar um espaco forcado antes da quebra de linha quando houver um elemento inline seguido de uma quebra de