Grafica Vettoriale e Grafica BitMap o Raster Matjaž Hmeljak Grafica vettoriale: si conserva sul "display file" l'informazione di tutti i comandi usati per generare un' immagine, cioe' la sequenza delle primitive (disegna un segmento di linea, disegna un poligono ecc) con i parametri opportuni e con le trasformazioni geometriche opportune; l'immagine viene riprodotta rieseguendo la sequenza dei comandi. L'immagine ottenuta dal "display file" puo' essere ingrandita a piacere, modificata, utilizzata come parte di un ' immagine piu' grande... grafica vettoriale: il file grafico conserva la sequenza dei comandi grafici con i parametri opportuni e con le trasformazioni geometriche opportune; l'immagine viene riprodotta rieseguendo la sequenza dei comandi. E' il file grafico piu' antico, usato per memorizzare disegni tecnici: negli anni 60 un programma memorizzava i comandi su un nastro magnetico che poi veniva montato su un sistema di disegno con plotter e calcolatore che leggeva il file grafico e lo interpretava (lo eseguiva) traducendo i comandi delle primitive in sequenze di comandi "linguaggio macchina" del plotter (questo programma oggi si direbbe il driver del plotter) oppure su dispositivi grafici piu' veloci (schermo vettoriale) o addiritura su una stampante (pixel 130 x 80 = una pagina di stampa) grafica vettoriale: il file postscript e' un disegno vettoriale, dove sono riportati in "esteso" i comandi per tracciare linee, poligoni, caratteri disegnati con primitive geometriche ecc; un frammento di file postscript : %!PS-Adobe-3.0 EPSF-3.0 %%For: aldo %%Title: PGPLOT PostScript plot %%Creator: PGPLOT %%CreationDate: 6-Feb-2007 23:20 %%BoundingBox: (atend) ... %%LanguageLevel: 1 %%Orientation: Landscape ... %%EndComments %%BeginProlog /L {moveto rlineto currentpoint stroke moveto} bind def /C {rlineto currentpoint stroke moveto} bind def .../EP {rlineto closepath eofill} bind def .../MB {gsave translate MFAC dup scale 1 setlinewidth 2 setlinecap 0 setlinejoin newpath} bind def .../FC {0 360 arc fill} bind def %%EndProlog %%Page: 1 1 %%BeginPageSetup /PGPLOT save def 0.072 0.072 scale 8149 250 translate 90 rotate 1 setlinejoin 1 setlinecap 1 SLW 1 SCF %%EndPageSetup %%PageBoundingBox: (atend) ... 0.000 0.000 0.000 setrgbcolor 1373 23 BP 7753 0 LP 0 7753 LP -7753 ... LP -26 108 LP -29 107 LP -32 106 LP -36 105 LP 40 103 LP -42 103 LP -46 101 LP -49 99 LP -51 98 LP -55 97 LP ... 1.000 1.000 1.000 setrgbcolor 6884 4627 BP 0 8 LP 0 8 LP -1 8 LP -1 8 LP -1 8 LP -1 7 LP -2 8 LP -2 8 LP -2 8 LP -2 8 LP -3 7 LP -3 8 LP -3 7 LP -3 7 LP -3 8 LP -4 7 LP -4 7 LP -4 7 LP -5 6 LP -4 7 LP ... 0.000 0.000 0.000 setrgbcolor 1.000 1.000 1.000 setrgbcolor 5083 5259 BP -2 1 LP 0 0 LP -23 14 LP 0 0 LP -10 6 LP -1 2 LP 8 1 EP ... PGPLOT restore showpage %%PageTrailer %%PageBoundingBox: 24 114 588 678 %%Trailer %%BoundingBox: 24 114 588 678 %%DocumentFonts: %%Pages: 1 %%EOF grafica vettoriale: il file postscript e'un disegno vettoriale, dove sono riportati in "esteso" i comandi per tracciare linee, poligoni, caratteri disegnati con primitive geometriche ecc; il file postscript del disegno che segue occupa 16 Mb di spazio la stessa informazione (file vettoriale) puo' essere memorizzata in formato piu' compatto: il file vettoriale in formato pdf occupa 2,8Mb ma ... vedremo alcuni ma ... la stessa immagine in file pdf occupa 2,8Mb non e' un testo ASCII: %PDF-1.3 [[2978000bytes]] %ƒÂÚÂÎßÛ†–ƒ∆ 2 0 obj << /Length 4 0 R /Filter /FlateDecode >> stream x⁄ÏΩÀ≤$ÀÆ 6«WƒXfjff‰s¨Å∆˙ Ø&˚ »˚ˇf º<∫Ît=rôD^ i ˚‰Æïï 8‡^ ‡øóˇ´¸˜Ú_˛èˇòÀ•˝è ... ùÌøó•⁄’ˆÔyoœ≤Ø◊ØΩ=`øz.ø¶eµ´”—V@⁄’c˝5Okªv ... Å T“hd°ëîª6Çÿ¬Ï±ñ: >f§fl&üm◊Á ä‰Ìx›A4éÖ∂ ... |ŸNö ŸÆÕØ6◊rmù^ô‹ ÆÕ öU·HW¸†´√ˇ5;ø?ˇ Õ∞ h endstream endobj 9 0 obj 706 endobj 5 0 obj [ /ICCBased 8 0 R ] endobj 6 0 obj << /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 1 0 R ] >> endobj 10 0 obj << /Type /Catalog /Pages 6 0 R >> endobj 11 0 obj << /CreationDate (D:20070211201345+01'00') /ModDate (D:20070211201345+01'00') /Producer (Mac OS X 10.4.8 Quartz PDFContext) >> endobj xref 0 12 0000000000 00000 n 0002976748 00000 n ... 0002977937 00000 n 0002977987 00000 n trailer << /Size 12 /Root 10 0 R /Info 11 0 R /ID [ <779832d0b77bc297fdeb607c9b9d6779> <779832d0b77bc297fdeb607c9b9d6779> ] >> startxref 2978130 %%EOF grafica bitmap: il programma disegna su una "tela" e il risultato e' un reticolo di pixel modificato; il reticolo di pixel viene fissato fin dall'inizio (in genere non legato allo schermo), e rimane sempre lo stesso: ingrandendo l'immagine la qualita' dell'immagine degrada... l'immagine di seguito visualizzata e' un file jpg (compresso), che occupa 640kB vediamo un esempio di confronto di ingrandimento di un'immagine data originalmente in versione vettoriale (file postscript o file pdf) oppure trasformata (con un programma di conversione formato) in versione bit-map (jpeg) vettoriale vs bitmap Immagine di partenza (immagine costruita da A. Spizzichino di Bologna, con una libreria grafica Fortran (personale) su Unix; l'immagine e' data in postscript, e resa con Adobe... vettoriale vs bitmap - immagine di partenza (qui la resa e' fatta con il Graphic Converter) ... segue una sequenza di ingrandimenti successivi, eseguiti sempre sulla stessa sorgente droplets.pdf vettoriale vs bitmap - 1.o ingrandimento vettoriale vs bitmap - 2.o ingrandimento vettoriale vs bitmap - 3.o ingrandimento vettoriale vs bitmap - 4.o ingrandimento vettoriale vs bitmap - ingrandimenti da 1 a 4 a confronto: (nota gli spazi bianchi da err di approssimazione nella resa ps) vettoriale vs bitmap: vediamo gli ingrandimenti da versione bitmap (immagine di partenza uguale e' l'immagine droplets.ps trasformata in droplets.jpg, per schermo 1280x854 vettoriale vs bitmap - 1.o ingrandimento vettoriale vs bitmap - 2.o ingrandimento: i pixel ora si vedono vettoriale vs bitmap - 3.o ingrandimento i pixel originali sono dei rettangoli! vettoriale vs bitmap 4.o ingrandimento i pixel sono "quadratoni" vettoriale vs bitmap: riassumendo qui e' riportato in sequenza a destra lo stesso dettaglio (il 2.o rettangolo dal centro) : concludendo, vettoriale (a sinistra) vs bitmap (a destra) : il file vettoriale contiene le istruzioni per fare l'immagine, e quindi consente una riproduzione esatta con qualunque scala vettoriale: qui lo schermo dato da Acrobat Reader, le schermate precedenti erano date da un altro programma (Graphic Converter - problemi di spazi bianchi tra una primitiva e l'altra)