{{htmlmetatags>metatag-robots=() metatag-title=(Convertire immagini in tiles) metatag-keywords=(Convert,img2tile,Tiles,Bitmaps,Commodore 64,Commodore VIC20,Commodore 16) metatag-description=(Questo articolo fornisce alcune indicazioni sul programma img2tile, così come una breve spiegazione di alcuni degli algoritmi usati.) metatag-media-og:image=(:img2tile-snapshot.png) metatag-og:title=(Convertire immagini in tiles) metatag-og:description=(Questo articolo fornisce alcune indicazioni sul programma img2tile, così come una breve spiegazione di alcuni degli algoritmi usati.) }} ====== CONVERTIRE IMMAGINI IN TILES ====== ===== INTRODUZIONE ===== Questa pagina non vuole sostituire il manuale utente del software ''[[https://github.com/spotlessmind1975/img2tile|img2tile]]'' (per questo c'è il [[https://github.com/spotlessmind1975/img2tile/blob/master/README.md|README]]) ma fornire alcune indicazioni sul suo modo di operare, nonché per spiegare alcuni degli algoritmi utilizzati. Fornisce, inoltre, un esempio usando le primitive della [[:midres_library|libreria midres]]. {{ ::diagrammi-img2tile.png?nolink&600 |}} ===== PREPARAZIONE ===== {{ ::img2tile-gimp.jpg?nolink&600 |}} Le immagini possono essere preparate con qualsiasi programma di fotoritocco, come ad esempio [[https://www.gimp.org/|GIMP]]. Le immagini devono, ovviamente, avere le dimensioni di un tile (8x8 pixels) o di un multiplo di un singolo tile (i.e. 32x24 pixel, 64x64 pixel, and so on). Sebbene il programma possa leggere moltissimi formati grafici, i risultati più precisi si ottengono utilizzando due colori molto contrastati (bianco / nero) e salvando usando il formato PNG a RGB (24 bit) ===== IMMAGINI PICCOLE ===== La funzione principale di questo programma è quella di convertire le immagini bitmap (da vari formati) in un "file charset", adatto per il caricamento nella memoria dei caratteri dei più diffusi computer a 8 bit. Il modo più semplice per spiegarne il funzionamento è fornire un esempio. Sotto c'è un'immagine 8x8 pixel di una "bomba" (''bomb.png''). {{ ::img2tile-example2.png?nolink&200 |}} Ogni pixel bianco disegnato sull'immagine è un pixel che deve essere rappresentato sul carattere da disegnare sullo schermo. Per convertire questa immagine in un carattere, si può chiamare il programma con le seguenti opzioni: img2tile -i bomb.png -o tiles.bin ===== IMMAGINI GRANDI ===== Al momento questo software gestisce solo font di 8x8 pixel. Per questo motivo, non è in grado di lavorare con immagini che non siano multipli di queste dimensioni. D'altra parte, il sistema è in grado di convertire immagini che sono multipli di queste dimensioni. Il meccanismo di conversione è semplice: l'immagine originale è divisa in tile. Ogni tile viene quindi rappresentata in sequenza. Quindi, se hai un'immagine di NxM pixel, ''img2tile'' genererà (N/8)x(M/8) tile. {{ ::img2tile-example.png?nolink&200 |}} Ad esempio, l'immagine di un aeroplano (32x16 pixel, ''aeroplane.png'') occupa uno spazio di 3x2 tile, quindi verranno generati 6 tile, nel seguente ordine: {{ ::img2tile-example3.png?nolink |}} La riga di comando è la seguente: img2tile -i aeroplano.png -o tiles.bin \adsense\ ===== IMMAGINI MULTIPLE ===== Questo programma permette di convertire una serie di immagini, una dopo l'altra. È sufficiente fornire una serie di opzioni ''-i''. Le tessere generate saranno quindi scritte, sequenzialmente, nel file indicato dall'opzione ''-o''. Ad esempio, se si passano le immagini dell'aereo e della bomba sulla stessa riga di comando, il risultato è il seguente: {{ ::img2tile-example4.png?nolink |}} Segue la riga di comando: img2tile -i airplane.png -i bomb.png -o tiles.bin ===== IMMAGINI COLORATE ===== Dalla release 1.14 del programma è possibile generare tile multicolor con l'opzione ''-m''. In tal caso, quello che conta non è più la luminosità del singolo pixel ma il suo colore, inteso come RGB. In particolare, l'opzione permette di gestire tile che hanno fino a 4 colori. {{ :midres_library:tutorial:mctile:mctiles_tutorial_08.png?nolink&600 |}} Maggiori informazioni sono disponibili su [[:it:midres_library:tutorial:mctile|questo tutorial]], nella sezione su [[:it:midres_library:tutorial:mctile:generating_tiles|come si generano tile multicolor]]. ===== SIMBOLI DI COMPILAZIONE ===== Il programma è in grado di generare un file include per il linguaggio C con i simboli necessari per identificare un tile all'interno del tileset (come "offset"). Il nome del simbolo avrà il prefisso ''TILE_'' e deriva dal nome del file, secondo una logica molto semplice: * se il nome contiene un carattere di sottolineatura (_), la parte destra del trattino basso (meno l'estensione) verrà utilizzata come nome del simbolo; * in caso contrario, il nome coinciderà con quello del file (sempre dopo aver rimosso l'estensione). Ad esempio, nel caso precedente verranno creati i seguenti simboli: #define TILE_AIRPLANE 0 #define TILE_BOMB 8 Inoltre, per ogni tile, verranno generati due simboli aggiuntivi: - ''TILE_xxx_WIDTH'', che conterrà la larghezza dell'immagine (in termini di tiles); - ''TILE_xxx_HEIGHT'', che conterrà l'altezza dell'immagine (in termini di tiles). Ad esempio, nel caso precedente verranno creati i seguenti simboli: #define TILE_AIRPLANE_WIDTH 4 #define TILE_AIRPLANE_HEIGHT 2 #define TILE_BOMB_WIDTH 1 #define TILE_BOMB_HEIGHT 1 Infine, saranno generati altri due simboli: - ''TILE_START'', che conterrà il primo indice del conto (0); - ''TILE_COUNT'', che conterrà il conteggio totale dei tiles. La riga di comando segue: img2tile -i aeroplano.png -i bomb.png -g header_tiles.h -o tiles.bin ===== PROGRAMMA DI ESEMPIO ===== Questo semplice programma carica tutte le tile preparate con l'ultimo comando ''img2tile'', e disegna una bomba gialla al centro dello schermo di default: #include "midres.h" #include "header_tiles.h" mr_tileset_load("tiles.bin", MR_TILESET_0, TILE_START, TILE_COUNT); mr_tileset_visible(MR_TILESET_0); mr_puttile(MR_SCREEN_DEFAULT, MR_SCREEN_WIDTH >> 1, MR_SCREEN_HEIGHT >> 1, TILE_BOMB, MR_COLOR_YELLOW); [[:it:midres_library|{{ ::midres-logo.png?600 |MIDRES - an isomorphic gamelib}}]]