Entendo perfeitamente (e agradeço!) que isso esteja exposto como uma configuração do site para administradores ativarem ou desativarem, mas considero que essa “funcionalidade” é, desde o início, muito equivocada.
Existem duas funcionalidades extremamente importantes dos PNGs: sua representação sem perdas (e legível!) de texto e o suporte à transparência. Ambas são razões importantes para usar PNGs. Como usuário de um site Discourse, carreguei uma imagem (de texto com transparência) no meu fórum e fiquei muito desapontado ao vê-la ser convertida automaticamente para JPG. Não importa, vou hospedá-la em outro lugar. Bem, isso funcionou muito bem até que o @system apareceu, baixou e converteu minha imagem, editando minha postagem sem que eu soubesse, quebrando a transparência e fazendo com que ficasse com aparência pior. Felizmente, sou também administrador e consegui pesquisar na web até encontrar um dos tópicos abaixo que me orientou sobre a configuração png to jpg quality que eu poderia alterar.
No mínimo, parece prudente desativar essa funcionalidade se houver transparência no GIF.
As pessoas realmente gostam dessa funcionalidade em seus fóruns? Ela já foi levantada duas vezes antes, ambas as vezes com pessoas confusas/frustradas porque os PNGs estavam sendo convertidos. Parece válido reconsiderar essa configuração padrão.
Isso significa que a imagem ficou muito menor como JPG. Acredito que existam configurações do site para ajustar esse limite. Dê uma olhada e pesquise nas configurações do seu site.
Em Configurações/Arquivos, role até o 3º item a partir do final. Desmarque Remover metadados de imagem. Logo acima está a opção qualidade de png para jpg. Ajuste a configuração conforme necessário.
Sim, entendo perfeitamente que isso seja configurável (já desativei essa opção no meu site) e compreendo a motivação. Ainda assim, acho que a própria funcionalidade é equivocada e faria sentido alterar o padrão.
Aqui está um exemplo — PNGs são o formato de arquivo padrão para capturas de tela, e com razão. Se eu fizer uma captura de tela desta janela e tentar enviá-la, ela será convertida para JPG.
O arquivo original tinha 361 KB; seu JPG comprimido tem 218 KB. Claro, é menor, mas também perdemos a transparência — fica horrível para quem usa tema escuro — e há artefatos ao redor do texto.
Se, em vez disso, eu usar o optipng localmente para otimizar o PNG, obtenho um arquivo com transparência e texto nítido que tem apenas 219 KB. Agora, ao enviá-lo, ele permanecerá como PNG:
Converter PNG para JPG é uma conversão extremamente com perdas de qualidade. É uma coisa fazer isso no momento do upload; é outra completamente diferente editar posts para aplicar isso automaticamente a imagens externas após a publicação. Existem outras formas de economizar largura de banda e armazenamento, incluindo otimizadores de PNG e até redimensionamento (com a funcionalidade de clique para ver em tamanho completo, parece sensato incorporar a imagem menor no post e mostrar a imagem em tamanho completo apenas ao clicar).
Há vários tópicos de pessoas tentando hospedar seus fóruns com o menor custo possível e reclamando que as imagens estão ocupando muito espaço. Esse tipo de administrador não se importa com a qualidade das imagens; tudo o que querem é cortar cantos e reduzir custos.
Do outro lado do espectro, há pessoas que estão realmente comprometidas com suas comunidades, que utilizarão armazenamento de objetos e serão capazes de oferecer boa qualidade com custos razoáveis.
A discussão aqui é sobre os padrões, certo? Ou talvez pudéssemos tentar comparar o tamanho do JPG com a otimização de postagem em PNG? Se me lembro bem, a otimização de PNG pode ser bastante cara…
Eliminar esse recurso não vai acontecer. Mas este post parece interessante:
O que seria necessário para que o Discourse tentasse usar o optipng primeiro e, em seguida, usasse o tamanho “otimizado” resultante para determinar se quer converter para JPG? Ou isso seria muito lento?
Tente executar o optipng em um PNG de 6000x6000 e veja o que acontece. Já fazemos uma forma disso, mas a solução cai abruptamente em um limite algorítmico, e de forma bem ruim.
Eu não estou de forma alguma tentando eliminar o recurso — desculpe se fui excessivamente exagerado ao chamá-lo de recurso problemático. O ponto são os padrões. Eu achei o comportamento surpreendente e pouco útil (especialmente depois que eu contornara o problema com um link externo e ele foi automaticamente editado de volta). Por isso, vim aqui porque pensei que seria benéfico para os outros se o padrão fosse diferente… mas, como em todas as escolhas de padrão, preferências subjetivas sobre os trade-offs rapidamente entram em jogo.
Obrigado pelo post bem fundamentado, Rafael. Aprecio a discussão — como disse inicialmente, eu estava genuinamente perguntando se as pessoas gostavam desse recurso.
Vale a pena dizer que a escolha atual de usar JPEG otimizado como padrão não é uma decisão equivocada! Eu adoro PNG e detesto JPG para gráficos, mas, neste caso, apoio totalmente o regime atual (nos dois sentidos: autoridade e sistema).
A equipe do Discourse fez uma avaliação realista do que tornará o Discourse bem-sucedido “out of the box”:
O administrador médio de um site não estará procurando por opções de qualidade de imagem. A qualidade da imagem não é um objetivo para eles, e eles não considerarão o formato de arquivo de imagem padrão como um problema. Portanto, usar JPG otimizado como padrão causa menos transtornos e traz o maior benefício para a maioria das pessoas.
Entusiastas do PNG, como eu, sempre buscam opções no site para preservar a qualidade e as informações da imagem. Da mesma forma, sites focados em fotos e imagens terão a qualidade da imagem como uma decisão central.
Uma consequência prática da abordagem atual provavelmente será uma transição suave para o WebP com perdas. Então, a questão do WebP com perdas versus sem perdas provavelmente surgirá em outros tópicos aqui.
Uma coisa que eventualmente teremos é a capacidade de os usuários otimizarem suas imagens antes de fazer o upload.
Ao executar o trabalho de compressão em outra thread (usando web workers) e utilizando os mesmos algoritmos que usamos no servidor (usando WASM), a experiência do usuário não é ruim.
Se você instruir seu programa de captura de tela a parar de inserir sombras projetadas, o Discourse provavelmente deixará de convertê-la, pois ela realmente será texto e cores sólidas.
Hoje, estive investigando isso para um site que deseja manter todos os arquivos PNG enviados no formato PNG. O que observei é que, mesmo configurando qualidade de png para jpg como 100, o Discourse ainda converte PNGs grandes para JPGs, a menos que a configuração recomprimir qualidade original de jpg também esteja definida como 100. Esse é o comportamento esperado? Se for, a descrição da configuração recomprimir qualidade original de jpg precisa ser atualizada para explicar como ela afeta o upload de PNGs.