Aplicar automaticamente fator de escala a imagens coladas da área de transferência

Estou usando um monitor HiDPI com um fator de escala de 150%. Toda vez que crio uma captura de tela e a colo no Discourse, tudo fica muito grande. Preciso aplicar manualmente um fator de escala à imagem para que ela fique com uma aparência razoável.

Vamos supor que eu crie uma captura de tela da seguinte caixa, que tem um tamanho de 110x110px.

Quando colo essa captura de tela (Ctrl+V) no composer, obtenho uma imagem com um tamanho de 167x167px.


![image|167x167](upload://fWfpRZXtBMVBXjcMTAPOwtG5bND.png)

Idealmente, eu obteria uma imagem com o tamanho correto sem ter que me lembrar da porcentagem correta para reduzir a imagem (que é 66% no meu caso).


![image|167x167, 66%](upload://fWfpRZXtBMVBXjcMTAPOwtG5bND.png)

Vejo 2 opções para isso. Se o fator de escala for diferente de 1:

  1. Adicionar automaticamente o fator de escala correto ao Markdown da imagem
    ![image|167x167, 66%](...)

ou

  1. Adicionar o fator de escala correto à caixa de ferramentas da imagem na janela de visualização
    image

O fator de escala pode ser calculado em JavaScript:

Math.floor(100 / window.devicePixelRatio)
6 curtidas

Esta é uma ótima ideia, eu também tenho dificuldade com isso o tempo todo.

Pensando alto, isso causaria falsos positivos se o usuário copiar/colar uma imagem que não é uma captura de tela?

Além disso, sobre a reimplantação, não vejo por que não podemos fazer tanto 1 quanto 2.

4 curtidas

Sim, será um falso positivo ao colar uma imagem que não é uma captura de tela. Fico imaginando o que é inserido com mais frequência, capturas de tela ou outras imagens. :thinking:

1 curtida

Não sei, acho que depende do usuário e do tipo de foto que você posta. Às vezes, copio uma imagem no meu celular e a colo no desktop, então também existe esse cenário.

De qualquer forma, começar com a opção 2 evitaria os falsos positivos, apenas forneceria um tamanho padrão alternativo mais agradável na visualização.

1 curtida

Parece que as ferramentas de captura de tela codificam algumas informações sobre DPI nos arquivos PNG. por exemplo, se eu carregar uma captura de tela do meu ambiente macOS de alta DPI para https://www.metadata2go.com/, eu vejo

Se eu desativar o HiDpi, esses campos de metadados parecem desaparecer do arquivo.

Você vê algo semelhante no Windows, @gerhard? Se sim, talvez haja uma maneira de lermos isso em JS e adivinharmos a densidade de pixels.

Também encontrei este gist que pode ser útil.

2 curtidas

Estou investigando a análise dos primeiros bytes de PNGs para PNGs animados remotos perdem sua animação também, então temos múltiplos casos de uso para um hook aqui.

2 curtidas

Estou usando o Spectacle no Linux e ele não parece adicionar nada aos metadados.

O código desse gist retorna false para uma captura de tela que criei no meu sistema Linux com um fator de escala de 150%. O chunk pHYs dessa imagem se parece com isto:

{ xDpu: 3780, yDpu: 3780, xDpi: 96, yDpi: 96, unit: 'meter' }
3 curtidas