sobota 16. srpna 2014

Jak jsem dělal duhokolóru

Protože jsem chtěl předchozí příspěvek vylepšit šestibarevným symbolem hnutí LGBT a současně jsem nechtěl stahovat nějaký obrázek s problémovými autorskými právy, rozhodl jsem se ho vygenerovat sám.
Nakonec jsem sáhl po metapostu (prostě proto, že jeho syntaxi umím nejlíp). V úvahu by padalo i přímé generování bitmapy ImageMagickem nebo programem v perlu (či jiném programovacím jazyce), který by to vyplivl jako blok binárních dat. Nicméně tyhle postupy bych musel dělat "s příručkou na kolenou", protože obsahují řadu konstrukcí, které jsou syntakticky poměrně obtížné a z pohledu mých programátorských zkušeností i neobvyklé.

Takže jsem vyrobil následující program:
prologues:=1; %kreslící plocha nastavena na obdélník opsaný
              %vykresleným grafickým prvkům
u=1mm; %definice základní délkové jednotky
color barva[];   %deklarace pole barev, následují definice barev
barva0:=blue;    %(0,0,1)
barva1:=(0,1,1); %cyan
barva2:=green;   %(0,1,0)
barva3:=(1,1,0); %yellow
barva4:=(1,.5,0);%orange
barva5:=red;     %(1,0,0)
beginfig(1);     %začátek obrázku
z0=origin;       %(0,0)
z1=(0u,15u);z2=(5u,15u);z3=(5u,0u); %definice rohů prvného obdélníka
z100=(5u,0);     %pomocná proměnná pro posun
for i=4 upto 23: z[i]=z[i-4]+z100;endfor; %definice rohů dalších obdélníků
%vykreslení barevných obdélníků cyklem:
for i=0 upto 5:a:=4*i;
fill z[a+0]--z[a+1]--z[a+2]--z[a+3]--cycle withcolor barva[i];endfor;
endfig; %konec obrázku
end;    %konec programu

Napravo od znaku % jsou konentáře, které metapost nezpracovává a které jsou zde doplněny pro lepší orientaci čtenáře.
Výsledkem byl soubor Duha.1 ve formátu encapsulated postscript (=samostatný obrázek, vložitelný do jiného postscriptového souboru a mající velikost odpovídající jen tomu, co je tam nakresleno)

Tento obrázek jsem převedl na jpg příkazy shellu:
# Spuštění metapostu nad pogramem k vykreslení obrázku
mpost Duha.mp
# Konverze výstupu z metapostu (postscript) na jpg
# program convert z balíku ImageMagick
convert Duha.1 Duha.jpg

Zde jsou komentáře uvedeny znakem #

Takže jsem ten ImageMagick nakonec použil na konverzi do formátu jpg (na windows by se asi použil IrfanView).

Žádné komentáře:

Okomentovat