{{htmlmetatags>metatag-robots=()
metatag-title=(Convertire immagini al formato midres)
metatag-keywords=(Conversione,img2midres,Midres,Bitmaps,Commodore 64,Commodore VIC20,Commodore 16)
metatag-description=(Questo articolo fornisce alcune indicazioni sul programma img2midres, insieme alla spiegazione di alcuni degli algoritmi usati.)
metatag-media-og:image=(diagrammi-img2midres_uncompressed.png)
metatag-og:title=(Convertire immagini al formato midres)
metatag-og:description=(Questo articolo fornisce alcune indicazioni sul programma img2midres, insieme alla spiegazione di alcuni degli algoritmi usati.)
}}
====== CONVERTIRE IMMAGINI AL FORMATO MIDRES ======
===== PREMESSA =====
Questa pagina non vuole sostituire il manuale d'uso del software (per quello c'è il [[https://github.com/spotlessmind1975/img2midres/blob/master/README.md|README]]) quanto fornire alcune indicazioni sul suo funzionamento nonché spiegare alcuni degli algoritmi utilizzati.
===== MODALITA' OPERATIVE =====
Il programma funziona in due modalità alternative:
* **modalità non compressa** ''-u'';
* **modalità compressa** ''-c''.
==== MODALITA' NON COMPRESSA (CBM) ====
{{ ::diagrammi-img2midres_uncompressed.png?nolink&600 |}}
In questa modalità, il programma leggerà il file immagine proposto in ingresso e genererà due file separati:
* un file bitmap (''-o'') con la sola informazione sui mixel;
* un file colore (''-O'') con l'informazione sul colore per ogni carattere.
Il vantaggio di questa modalità è che è compatibile con il BASIC V2, poiché i file sono salvati seguendo lo standard CBM. Sarà quindi sufficiente lanciare il comando ''LOAD'' con l'opzione finale '',1'' su ognuno di questi due file per far comparire la schermata complessiva sullo schermo.
Lo svantaggio principale è che l'immagine viene costruita mentre il sistema la legge, e questo può costituire un problema estetico. Un altro problema è che tale rappresentazione occupa più spazio di quello strettamente necessario. Ad esempio, sul Commodore 64 una schermata occupa complessivamente 2.004 bytes.
Esempio di un caricatore di immagini BASIC per Commodore 64:
10 if p=0 then 50
20 if c=0 then 60
30 poke 53281,0
40 goto 40
50 p=1:load "file.pic",8,1
60 c=1:load "file.col",8,1
Esempio di un caricatore di immagini BASIC per Commodore VIC 20:
5 if i=0 then 45
10 if p=0 then 50
20 if c=0 then 60
30 poke 36879,8
40 goto 40
45 for i=0 to 23*22:print " ";:next i
50 p=1:load "file.pic",8,1
60 c=1:load "file.col",8,1
\adsense\
==== MODALITA' NON COMPRESSA (ATARI) ====
In questa modalità, il programma leggerà il file immagine proposto in ingresso e genererà un solo file:
* un file bitmap (''-o'') con la sola informazione sui mixel.
Tuttavia, sarà necessario caricare il set di caratteri ridefiniti ''ztiles.bin'' per visualizzare il risultato.
==== MODALITA' COMPRESSA (CBM) ====
{{ ::diagrammi-img2midres_compressed.png?nolink&600 |}}
In questa modalità, il programma leggerà il file immagine proposto in ingresso e genererà un singolo file:
* un file compresso (''-o'') con una combinazione delle informazioni legati ai mixel e a quelle del colore.
Il vantaggio principale è che tale rappresentazione occupa meno del 50% dello spazio necessario nella versione non compressa. Ad esempio, sul Commodore 64 una schermata occupa complessivamente 1.002 bytes. L'altro vantaggio è che l'immagine può essere ricostruita in modo più rapido che leggendo da una periferica di massa, e questo risulta esteticamente più gradevole.
Lo svantaggio principale di questa modalità è che è incompatibile con il BASIC V2, ed è necessario disporre tanto di un apposito lettore che di una schermata di appoggio. Il programma dimostrativo della [[midres library|libreria midres]] è proprio un riproduttore di slideshow, che è in grado di visualizzare il formato compresso. Per utilizzarlo è necessario creare le varie immagini, aggiornare il file dello slideshow, modificare il makefile e, infine, ricostruire il programma dimostrativo.
===== ELABORAZIONE DELL'IMMAGINE =====
{{ ::diagrammi-process.png?nolink&800 |}}
La scrittura dell'immagine midres avviene attraverso una serie di processi automatici, che elaborano l'immagine per adattarla alle esigenze del mezzo di rappresentazione.
In primo luogo, se l'immagine in ingresso e quella in uscita non hanno la medesima dimensione, il sistema suddividerà l'immagine in ingresso in una serie di blocchi. Ad ognuno di questi blocchi sarà fatto corrispondere uno dei mixel in uscita.
Poiché i blocchi in ingresso sono composti da più pixel, il colore che sarà portato sul mixel in uscita sarà calcolato come la media matematica dei colori di tutti i pixel.
Ognuno di questi pixel "medi" sarà sottoposto ad un duplice processo parallelo. Da una parte, sarà sottoposto al confronto con la soglia di luminosita indicata sulla linea di comando. Dall'altra, si cercherà il colore della palette più vicino a quello che si ha in ingresso.
Il risultato di queste due operazioni determinerà la scrittura, sulla bitmap midres, del mixel (acceso o spento) e del relativo attributo di colore.
[[:it:midres_library|{{ ::midres-logo.png?600 |MIDRES - an isomorphic gamelib}}]]