Como evitar qualquer tipo de recompressão em imagens?

Somos um fórum de fotografia.

Queremos limitar o upload de imagens a 1,2 MB, mas evitar qualquer tipo de recompressão quando a imagem estiver dentro desse limite.

Preferiríamos que, se a imagem for maior, o usuário fosse avisado e impedido de fazer o upload.
Mas ainda não descobrimos como fazer isso.

Quando alguém faz o upload de uma imagem um pouco mais pesada, o sistema redimensiona e recomprime de forma agressiva, e os usuários reclamam que o fórum estragou a foto deles (menos detalhes, degradação de cor, etc.).

Com a adição das opções do compositor de imagens (recentemente), as coisas ficaram ainda piores. Até imagens com menos de 1,2 MB estão sendo recomprimidas.

Queremos evitar qualquer tipo de intervenção na imagem do usuário (é responsabilidade dele ajustar a imagem conforme desejar, respeitando as limitações de peso e tamanho).
Pelo menos para imagens que estejam dentro dos limites estabelecidos.

Como configurar melhor as opções para obter esse comportamento?

Acho que não conseguimos evitar a recompressão em imagens que não atendem aos limites, mas pelo menos queremos evitá-la nas que estão dentro dos limites e controlar a compressão das que excedem.

O fórum tende a comprimi-las demais, gerando resultados como 200 KB e 900 pixels no lado maior.

Acho que você precisaria de um plugin para substituir esses comportamentos.

Ou fazer com que eles façam o upload em outro lugar e criem o link.

Mas acho que existe um plugin ou componente de tema que permite fazer o upload de imagens para outro local, como o MinIO. Algo assim pode ser o que você procura.

Veja Azure Blob Storage Plugin e Video Upload to YouTube and Vimeo using Theme Component como exemplos. Você precisaria decidir onde hospedar as imagens e criar um componente de tema semelhante.

Hmm… queremos as imagens em nosso servidor, pois não temos controle sobre outros sites onde as imagens podem ser perdidas.

Supus que não seremos capazes de desativar completamente o processamento de imagens.

Ficaremos satisfeitos se o sistema não alterar imagens que estejam dentro dos limites (1,2 MB de tamanho de arquivo e 2048 pixels no lado maior) e se pudermos ajustar um pouco a recompressão para as imagens que excedem esses limites.

Acho que consegui atingir o primeiro objetivo: apenas estabeleci o limite de tamanho do arquivo em 1230 KB e o limite no Image Composer para o mesmo tamanho em bytes.

Agora parece que imagens com tamanho inferior a esse não são recomprimidas (como funcionava em algumas versões anteriores; parece que o Image Composer foi introduzido recentemente).

Mas, ao tentar fazer o upload de uma imagem de, digamos, 2100 pixels e 3 MB, obtém-se resultados estranhos.
Às vezes, ela é redimensionada para algo como 900 pixels e 200 KB, outras vezes para 1024 pixels e 500 KB…
A imagem perde completamente os detalhes e a correção de cores.

Configurei os limites do Image Composer para 1920 pixels e a qualidade de compressão JPEG para 90. Portanto, esperava que ela recomprimisse para esse tamanho (testei com imagens que podem ser comprimidas com qualidade 90 e 1920 pixels facilmente dentro do limite de 1,2 MB).
Mas o sistema continua comprimindo-a excessivamente.

Você editou as configurações do site relacionadas ao tamanho máximo de imagem, largura e altura? Esse deve ser o seu primeiro passo.

Desculpe pelo atraso. Não percebi a resposta.

Sim, como expliquei anteriormente, estabelecemos um limite de 1,2 MB e um limite de resolução de 4 MP.

Quando a imagem não cumpre esse limite, o sistema a comprime fortemente, às vezes com resultados desastrosos, como 600 pixels ou 1000 pixels de largura para uma imagem que foi carregada com 1920 ou 2048 pixels de largura.
A perda de qualidade é mais do que evidente para um olho treinado: texturas ausentes, halos, má gradação de cores…

Com as atualizações recentes, até mesmo imagens que cumprem os limites recebem uma “melhoria” do sistema e são comprimidas com perda de qualidade.

Ajustamos a “qualidade do jpg original de recompra” e definimos 100% na esperança de evitar a recompra. Parece funcionar, mas não tenho certeza se ela é recomprimida de qualquer maneira (mas pelo menos não há perda de qualidade visível).

Você precisa ajustar o composer media optimization image bytes optimization threshold para desativar a otimização de tamanho do cliente de imagens abaixo desse tamanho. O padrão se aplica a imagens acima de 500 KB, então você deseja aumentar essa configuração para 1,2 MB.

Devemos melhorar a descrição destas configurações do site para tornar mais claro como as coisas funcionam? :thinking:

Eu acho que sim, mas escrever textos não é o meu forte.

Atualmente é

Tamanho mínimo do arquivo de imagem para acionar otimização do lado do cliente

Talvez

Tamanho mínimo do arquivo de imagem para acionar redimensionamento / compressão antes do upload

?

Talvez

Imagens maiores que esta serão redimensionadas e comprimidas pelo cliente