Discourse perde i pixel in alto/in basso durante la generazione delle miniature

Quando alleghi immagini a un post, Discourse le ridimensiona per creare miniature adatte alla visualizzazione.

Sembra esserci un bug che, nel farlo, causa la perdita costante delle righe di pixel superiori e inferiori.

Non è un grosso problema, ma rende strani gli elementi con bordi sottili (ad esempio, la maggior parte degli screenshot di software Windows 10 appare errata perché manca il bordo inferiore della finestra).

Osservazioni:

  • Non sembra dipendere dal rapporto d’aspetto, quindi non credo si tratti di un ritaglio intenzionale di immagini molto larghe o alte; sembra un bug.

  • Ho verificato che i pixel mancanti sono assenti nella risorsa effettiva dell’immagine in miniatura. Quindi il problema si verifica quando la miniatura viene generata sul backend, non quando viene visualizzata dal browser.

  • Modifica: Ho appena notato che i pixel superiori e inferiori non sono completamente spariti, ma sono così fusi/sbiaditi che di fatto lo sono. Forse è legato a come l’algoritmo di ridimensionamento gestisce i bordi dell’immagine? Non sembra mai accadere ai bordi sinistro e destro, ad esempio negli screenshot in formato verticale.

  • Quando fai clic per visualizzare l’immagine a dimensioni originali, questa viene almeno mostrata correttamente.

Spero che questa immagine di esempio riproduca il problema qui sul forum Discourse:

Dovrebbe essere un’immagine bianca con un bordo rosso di 1 pixel su tutti i lati. Se il problema si verifica qui, vedrai solo i bordi sinistro e destro finché non fai clic per visualizzare l’immagine a dimensioni originali.

(Modifica: Sembra che accada effettivamente anche qui.)

Nel caso non accadesse, ecco il risultato che vedo sul mio forum:

Quando fai questi test, devi aspettare un po’ dopo aver pubblicato (e a volte aggiornare la discussione) perché il problema si manifesti, poiché la generazione della miniatura sul server richiede alcuni secondi dopo la pubblicazione.

4 Mi Piace

Sì, l’ho notato anch’io da un bel po’ di tempo. Non sono sicuro di cosa si possa fare al riguardo.

1 Mi Piace

Interessante, vedo la parte superiore, sinistra e destra, ma non quella inferiore.

chrome://gpu
Versione di Chrome Chrome/87.0.4280.141
Sistema operativo Windows NT 10.0.19042
GL_RENDERER ANGLE (Intel(R) HD Graphics 620 Direct3D11 vs_5_0 ps_5_0)
1 Mi Piace

Mi chiedo se dipenda dalla dimensione dello schermo, con risorse diverse servite a client diversi.

Dando una rapida occhiata al post/immagine sopra tramite F12, ho trovato due risorse, più l’immagine originale:

  • Immagine originale (1416 x 946) /original/3X/e/2/e2c5f032e18fa374c0593af71cf25d3499826289.png, che è intatta. URL diretto

  • Versione più piccola (1380 x 920) optimized/3X/e/2/e2c5f032e18fa374c0593af71cf25d3499826289_2_1380x920.png, che ha bordi superiore e inferiore (quasi) invisibili. URL diretto

  • Versione ancora più piccola (640x460) optimized/3X/e/2/e2c5f032e18fa374c0593af71cf25d3499826289_2_690x460.png, che non ha alcun bordo inferiore, ma presenta i bordi sinistro, superiore e destro. URL diretto

Potrebbero esserci alcuni argomenti di ImageMagick per regolare l’algoritmo di ridimensionamento e il modo in cui gestisce i pixel ai bordi, sebbene qualsiasi modifica potrebbe ovviamente peggiorare altre situazioni mentre migliora questa.

1 Mi Piace

Sì, è anche il mio pensiero. È un problema legato all’algoritmo di ridimensionamento. Finché la versione originale viene preservata, non vedo un problema serio qui, quindi lo sposto nella sezione delle richieste di funzionalità.

4 Mi Piace