{{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}}]]