Questa è una schermata di alcuni testi digitati in un editor di testo:
Questo è lo stesso testo a dimensioni maggiori.
Notare quanto è visibile l' aliasing sulle lettere con tratti diagonali prominenti come x
e z
. Questo problema è uno dei motivi principali per cui i caratteri raster hanno perso popolarità rispetto ai formati "scalabili" come TrueType.
Ma forse questo non è un problema intrinseco con i caratteri raster, solo con il modo in cui il loro ridimensionamento è generalmente implementato. Ecco un rendering alternativo usando una semplice interpolazione bilineare combinata con la soglia .
Questo è più fluido, ma non ideale. I tratti diagonali sono ancora irregolari e le lettere curve sono simili c
e o
sono ancora poligoni. Ciò è particolarmente evidente a grandi dimensioni.
Quindi c'è un modo migliore?
L'obiettivo
Scrivi un programma che accetta tre argomenti della riga di comando.
resize INPUT_FILE OUTPUT_FILE SCALE_FACTOR
dove
- INPUT_FILE è il nome del file di input, che si presume sia un file di immagine contenente testo nero su sfondo bianco. Puoi usare qualsiasi formato di immagine raster tradizionale (PNG, BMP, ecc.) Che sia conveniente.
- OUTPUT_FILE è il nome del file di output. Può essere in formato immagine raster o vettoriale. Puoi introdurre il colore se stai eseguendo un rendering subpixel simile a ClearType.
- SCALE_FACTOR è un valore a virgola mobile positivo che indica la quantità di ridimensionamento dell'immagine. Dato un file di input x × y px e il fattore di ridimensionamento s , l'output avrà una dimensione di sx × sy px (arrotondato agli interi).
È possibile utilizzare una libreria di elaborazione delle immagini open source di terze parti.
Oltre al tuo codice, includi output di esempio del tuo programma con fattori di scala di 1.333, 1.5, 2, 3 e 4 usando la mia prima immagine come input. Puoi anche provarlo con altri caratteri, compresi quelli spaziati proporzionalmente.
punteggio
Questo è un concorso di popolarità. Vince la voce con il maggior numero di voti meno i voti negativi. In caso di pareggio esatto, la voce precedente vince.
Modifica : scadenza estesa a causa della mancanza di voci. TBA.
Gli elettori sono incoraggiati a giudicare in base principalmente alla qualità delle immagini in uscita e, in secondo luogo, alla semplicità / eleganza dell'algoritmo.
SCALE_FACTOR
sempre> 1?