Esta é uma captura de tela de algum texto digitado em um editor de texto:
Este é o mesmo texto em tamanho maior.
Observe como o alias é visível em letras com traços diagonais proeminentes como x
e z
. Esse problema é um dos principais motivos pelos quais as fontes raster perderam popularidade em formatos "escaláveis" como o TrueType.
Mas talvez esse não seja um problema inerente às fontes raster, apenas com a maneira como a escala delas é normalmente implementada. Aqui está uma renderização alternativa usando interpolação bilinear simples combinada com limiar .
Isso é mais suave, mas não é o ideal. Os traçados diagonais ainda são irregulares e as letras curvas são c
e o
ainda são polígonos. Isso é especialmente visível em tamanhos grandes.
Então, existe uma maneira melhor?
A tarefa
Escreva um programa que aceite três argumentos de linha de comando.
resize INPUT_FILE OUTPUT_FILE SCALE_FACTOR
Onde
- INPUT_FILE é o nome do arquivo de entrada, que se supõe ser um arquivo de imagem contendo texto em preto sobre fundo branco. Você pode usar qualquer formato de imagem rasterizada convencional (PNG, BMP etc.) que seja conveniente.
- OUTPUT_FILE é o nome do arquivo de saída. Pode ser um formato de imagem raster ou vetorial. Você pode introduzir cores se estiver fazendo uma renderização de subpixel semelhante ao ClearType.
- SCALE_FACTOR é um valor positivo de ponto flutuante que indica quanto a imagem pode ser redimensionada. Dado um arquivo de entrada x × y px e o fator de escala s , a saída terá um tamanho de sx × sy px (arredondado para números inteiros).
Você pode usar uma biblioteca de processamento de imagens de código aberto de terceiros.
Além do seu código, inclua saídas de amostra do seu programa em fatores de escala de 1.333, 1,5, 2, 3 e 4 usando minha primeira imagem como entrada. Você também pode experimentá-lo com outras fontes, incluindo as espaçadas proporcionalmente.
Pontuação
Este é um concurso de popularidade. A entrada com o maior número de votos positivos menos votos negativos. Em caso de empate exato, a entrada anterior vence.
Edit : Prazo prorrogado devido à falta de entradas. TBA.
Os eleitores são incentivados a julgar com base principalmente na aparência das imagens de saída e, secundariamente, na simplicidade / elegância do algoritmo.
SCALE_FACTOR
Sempre é > 1?