Respostas:
Você pode, mas somente se o visualizador em JPEG suportar a extensão JPEG SmartScale . O jpegtran pode fazer isso para tamanhos de N / 8, com N = 1..16. Basicamente, o tamanho do bloco DCT é alterado de 8x8 para outra coisa durante a recompressão (por exemplo, 4x4), que efetivamente dimensiona a imagem.
Nota: O SmartScale foi introduzido na versão 8 da biblioteca libjpeg, mas não é amplamente suportado pelos visualizadores.
Um documento que descreve as alterações em detalhes pode ser encontrado aqui: Evolução do JPEG .
EDIT: Parece que a maioria dos espectadores não consegue exibir essas imagens, pois elas são baseadas no libjpeg-turbo. E o libjpeg-turbo optou por não implementar esse recurso . Na verdade, eu tentei alguns programas (no Ubuntu 14.04 e Windows 8) e nenhum deles foi capaz de exibir a imagem reduzida criada usando jpegtrans. Até o Photoshop, IrfanView e GIMP falharam.
EDIT 2: De fato, o Ubuntu e o Fedora nem sequer enviam a biblioteca libjpeg8, mas a substituem completamente pela versão libjpeg-turbo. Portanto, nenhum dos programas será capaz de ler arquivos JPEG SmartScale, exceto alguns binários estaticamente vinculados à biblioteca libjpeg8 original.
A resposta curta é não. Uma imagem JPEG usa compactação, o que significa que cada byte de saída depende de todos os outros. Se você alterar o número de bytes da imagem, deverá descomprimir e recomprimir.
Como resultado da recompressão, haverá uma perda de qualidade, pois o JPEG usa a compactação com perda, mas você está perdendo a qualidade mesmo assim ao dividir a resolução. Você pode obter a melhor qualidade possível a partir da imagem de baixa resolução, aumentando o nível de qualidade JPEG ao recomprimir, embora isso obviamente aumente o tamanho do arquivo.
Se você trabalha muito com imagens, é melhor trabalhar em um formato de compactação sem perdas, como PNG, convertendo para JPEG somente quando as imagens são finalizadas, desde que você tenha espaço extra em disco.