Windows bitmap: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
.anacondabot (discussione | contributi)
m robot Modifico: ja:Windows bitmap
m Corretto il collegamento Raster con Grafica raster (DisamAssist)
 
(150 versioni intermedie di 97 utenti non mostrate)
Riga 1:
{{NN|informatica|aprile 2023}}
{{Compressione |
{{Formato file
compressione = Windows bitmap (BMP) / Device-independent bitmap (DIB) |
|nome = Windows bitmap (BMP) / Device-independent bitmap (DIB)
sviluppatore = [[Microsoft]] |
|logo =
tipo = nessuna compressione / [[Run-length encoding|RLE]] |
|icona =
lossy = lossless |
|immagine =
licenza = libero da brevetti |
|didascalia =
website = http://www.microsoft.com/}}
|estensione = .bmp, .dib
'''Windows bitmap''' è un formato dati utilizzato per la rappresentazione di [[raster|immagini raster]] sui [[Sistema operativo|sistemi operativi]] [[Microsoft Windows]] e [[OS/2]]. Noto soprattutto come [[formato di file]], fu introdotto con [[Windows 3.x#Windows 3.0|Windows 3.0]] nel [[1990]].
|magic_number =
|mime = image/bmp
|uniform_type_identifier = com.microsoft.bmp
|typecode =
|sviluppatore = [[Microsoft]]
|proprietario =
|licenza = Microsoft Open Specification Promise
|data_rilascio =
|ultima_versione =
|data_ultima_versione =
|genere = [[Grafica raster]]
|compressione = lossless
|estensione_di =
|esteso_a =
|standard =
|aperto = sì
|sito = www.microsoft.com
}}
'''Windows bitmap''' è un formato dati utilizzato per la rappresentazione di [[immagine raster|immagini raster]] sui [[Sistema operativo|sistemi operativi]] [[Microsoft Windows]]. Noto soprattutto come [[formato di file]], fu introdotto con [[Windows 3.x#Windows 3.0|Windows 3.0]] nel [[1990]].
 
Le '''bitmap''', come sono comunemente chiamati i [[file]] d'immagine di questo tipo, hanno generalmente l'[[Estensione (file)|estensione]] '''.bmp''', o meno frequentemente '''.dib''' ('''device-independent bitmap''').
Line 19 ⟶ 38:
Nelle immagini con profondità più alta il colore non è indicizzato bensì codificato direttamente nelle sue componenti cromatiche [[RGB]]; con 16 o 32 bit per pixel alcuni bit possono rimanere inutilizzati.
 
La versione 3 del formato non supporta il [[canale alphaalfa (informatica)|canale alfa]], la correzione del colore né i [[Metadato|metadati]].
 
=== Versioni 4 e 5 ===
Con [[Windows 95]] e [[Windows 98]] Microsoft ha introdotto le nuove versioni 4 e 5 del formato bitmap, che supportano il [[canale alphaalfa (informatica)|canale alfa]] e la definizione di [[Spazio dei colori|spazi di colori]] personalizzati. La versione 5 prevede inoltre la possibilità di utilizzare un profilo di colore in un [[file]] esterno e d'incorporare immagini [[Joint Photographic Experts Group|JPEG]] e [[Portable Network Graphics|PNG]]. Questi nuovi formati si trovano tuttavia assai raramente come file indipendenti e molte [[Applicazioneapplicazione (informatica)|applicazioni]] non sono in grado di riconoscerli; il loro uso principale è quello di formato interno per i [[Programma (informatica)|programmi]] di [[Microsoft Windows|Windows]] o di videogiochi<ref>{{cita web|lingua=en|url=http://www.echos.ch/eod/help/texturen.htm|titolo=Creating Textures|sito=Easy Object Designer}}</ref>.
 
== Struttura ==
<div class="thumb tright">
<div class="thumbcaption">
<center>
{| border="2" bgcolor="F8F8F8" cellpadding="4" cellspacing="0" style="margin: 1em; border: 1px #aaa solid; border-collapse: collapse;"
| align="left" | '''Header del file'''<br />(<span style="font-family:monospace">BITMAPFILEHEADER</span>)
|-
| bgcolor="E3ECF4" align="left" | '''Blocco d'informazioni'''<br />(<span style="font-family:monospace">BITMAPINFO</span>):
 
:'''Header della bitmap'''<br />(<span style="font-family:monospace">BITMAPINFOHEADER</span>)
:<hr noshade="noshade" size="1" />
:eventualmente: '''modello di colore'''
Line 45 ⟶ 63:
| align="left" | eventualmente: spazio inutilizzato
|}
</center>
Struttura di una bitmap
</div>
Line 52 ⟶ 69:
Su disco le immagini bitmap sono codificate utilizzando alcune semplici [[Struttura dati|strutture]] che ne descrivono le proprietà. Tutti i valori sono in ordine [[Ordine dei byte|little endian]].
; BITMAPFILEHEADER
: Questo è l'header della bitmap che contiene informazioni sulla grandezza in [[byte]] del [[file]] e l'[[offset]] dall'inizio del file del primo byte nella mappa dei [[pixel]]. Questa struttura è assente quando la bitmap è integrata come risorsa all'interno di un'[[applicazione (informatica)|applicazione]] o [[Libreria software|libreria]].
; BITMAPINFOHEADER
: Qui sono indicate le dimensioni in pixel dell'immagine e il numero di colori utilizzati. Le informazioni sono relative al dispositivo sul quale la bitmap è stata creata. Sempre in questa struttura sono indicate inoltre la [[risoluzione (grafica)|risoluzione]] orizzontale e verticale del dispositivo di output: questi valori, uniti a quelli della larghezza e dell'altezza in pixel, determinano le dimensioni di stampa dell'immagine in grandezza reale.
; modello di colore
: Con le versioni 4 e 5 del formato bitmap il blocco d'informazioni è stato ampliato con strutture che consentono di definire [[Modello di colore|modelli di colore]] personalizzati. Nella pratica queste strutture sono poco comuni.
; tavolozza
: Questa struttura è un [[array]] che fa corrispondere un colore ad ogni indice che può essere assegnato ad un pixel. Nella [[Tavolozza (informatica)|tavolozza]] ogni colore è rappresentato da una struttura di 4 byte (<span style="font-family:monospace">RGBQUAD</span>), uno ciascuno per i componenti [[rosso]], [[verde]] e [[blu]] più un byte non utilizzato. Nel caso di immagini con 16, 24 o 32 colori,bit per pixel questa tabella di colori non è necessaria perché il colore dei pixel non è indicizzato, bensì codificato direttamente nelle sue componenti.
; mappa dei pixel : Questa struttura di dati costituisce il corpo vero e proprio della bitmap, dove ad ogni pixel si fa corrispondere un colore sotto forma di indice nella tavolozza, oppure nelle sue componenti cromatiche. Nel caso in cui la dimensione in bytes delle linee orizzontali non sia un multiplo di 4, queste vengono allungate con bytes nulli. Nella versione 5 del formato bitmap questa struttura può anche incorporare immagini [[Joint Photographic Experts Group|JPEG]] e [[Portable Network Graphics|PNG]].
 
Nel caso più comune di bitmap nella versione 3 del formato non compresse e senza tavolozza extra per [[Profondità di colore|profondità]] superiori ad 8 [[Bit (informatica)|bit]] per pixel, la dimensione in byte richiesta dal file può essere espressa con la seguente [[formula]] matematica, dove ''w'' ed ''h'' indicano rispettivamente la larghezza e l'altezza dell'immagine in pixel e ''b'' la profondità in bit per pixel.
<div class="NavFrame" style="clear:both; text-align:left;">
 
<div class="NavHead"><font size = 2>
:<math>54+4\left(u\left(15-b\right)\cdot2^{b}+h\left\lceil\frac{w\cdot b}{32}\right\rceil\right)</math>
Espandi per vedere la struttura dettagliata
 
</font></div>
Con <math>u\left(x\right)</math> si è indicata la [[funzione gradino di Heaviside]], il cui valore è 0 per argomenti negativi e 1 per quelli positivi. <math>\lceil x\rceil</math> indica la funzione soffitto, equivalente al [[numero intero]] più piccolo maggiore o uguale all'argomento.
<div class="NavContent">
 
La stessa [[Espressione matematica|espressione]] si può formulare più semplicemente in [[C (linguaggio)|linguaggio C]] in questo modo:
<pre>
54 + 4 * (((1 << b) & 0xffff) + h * ((w * b + 31) / 32))
</pre>
 
===Struttura dettagliata===
{| border="2" cellpadding="4" cellspacing="0" style="margin: 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;" width="100%"
{| class="wikitable"
! colspan="4" align="center" bgcolor="#FFEFD5" | <span style="font-family:monospace">BITMAPFILEHEADER</span> (dimensione: 14 byte)
|-
Line 76 ⟶ 99:
|-
| 0
| style="font-family:monospace" | [[Word|WORD]]
| bfType
| la [[Stringa (informatica)|stringa]] [[ASCII]] <span style="font-family:monospace">"BM"</span> (valore decimale 1977816973, esadecimale 4D42424D)
|-
| 2
| style="font-family:monospace" | [[Dword|DWORD]]
| bfSize
| dimensione del file (''non affidabile!'')
|-
| 6
| style="font-family:monospace" | [[Dword|DWORD]]
| bfReserved
| 0
|-
| 10
| style="font-family:monospace" | [[Dword|DWORD]]
| bfOffBits
| offset del primo byte della mappa dei [[pixel]] a partire dall'inizio del file
|}
 
{| class="wikitable"
{| border="2" cellpadding="4" cellspacing="0" style="margin: 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;" width="100%"
! colspan="4" align="center" bgcolor="#FFEFD5" | <span style="font-family:monospace">BITMAPINFOHEADER</span> (dimensione: 40 byte)
|-
Line 105 ⟶ 128:
|-
| 0
| style="font-family:monospace" | [[Dword|DWORD]]
| biSize
| dimensione in byte del blocco d'informazioni insieme alle strutture per il modello di colore aggiunte nelle versioni 4 e 5:
; versione 3 : 40 (hex 28))
; versione 4 : 108 (hex 6C)
; versione 5 : 124 (hex 7C)
|-
| 4
Line 121 ⟶ 144:
| biHeight
| Corrisponde in [[valore assoluto]] all'altezza dell'immagine in [[pixel]]:
; quando il valore àè positivo : l'immagine è ''bottom-up'' (la mappa dei [[pixel]] incomincia dalla riga di pixel più in basso e finisce con quella più in alto). Questa è la variante più comune.
; quando il valore è negativo : l'immagine è ''top-down'' (la mappa dei [[pixel]] incomincia dalla riga di pixel più in alto e finisce con quella più in basso).
|-
| 12
| style="font-family:monospace" | [[Word|WORD]]
| biPlanes
| sempre 1
|-
| 14
| style="font-family:monospace" | [[Word|WORD]]
| biBitCount
| [[profondità di colore]] dell'immagine in [[Bit (informatica)|bit]] per [[pixel]], dev'essere uno dei seguenti valori: 1, 4, 8, 16, 24 o 32. In caso di 1, 4 o 8 [[Bit (informatica)|bit]] per [[pixel]] i colori sono indicizzati. I valori 16 e 32 sono poco comuni. Nella versione 5 del formato si può usare il valore 0 quando viene incapsulata un'immagine [[Joint Photographic Experts Group|JPEG]] o [[Portable Network Graphics|PNG]].
|-
| 16
| style="font-family:monospace" | [[Dword|DWORD]]
| biCompression
| uno dei seguenti valori:
Line 147 ⟶ 170:
|-
| 20
| style="font-family:monospace" | [[Dword|DWORD]]
| biSizeImage
|
Indica la dimesionedimensione in byte del buffer mappa dei [[pixel]]. Questo valore può essere lasciato a zero quando biCompression è impostato a <span style="font-family:monospace">BI_RGB</span>.
|-
| 24
| style="font-family:monospace" | [[Long integer|LONG]]
| biXPelsPerMeter
| [[risoluzione (grafica)|risoluzione]] orizzontale del dispositivo di output in [[pixel]] per [[metro]]; 0 se la risoluzione non è specificata.
|-
| 28
| style="font-family:monospace" | [[Long integer|LONG]]
| biYPelsPerMeter
| [[risoluzione (grafica)|risoluzione]] verticale del dispositivo di output in [[pixel]] per [[metro]]; 0 se la risoluzione non è specificata.
|-
| 32
| style="font-family:monospace" | [[Dword|DWORD]]
| biClrUsed
|
Line 171 ⟶ 194:
|-
| 36
| style="font-family:monospace" | [[Dword|DWORD]]
| biClrImportant
|
Line 180 ⟶ 203:
|}
 
<div style="margin: 1em 1.5em">''Con le versioni 4 e 5 del formato, Microsoft ha ampliato il blocco d'informazioni aggiungendo nuovi campi in coda alla struttura della versione precedente. La documentazione sul formato di queste nuove versioni è disponibile sulla MSDN Library.''</div>
 
<div align="center">
{| style="text-align: left;"
! style="border: thin solid grey" | <span style="font-family:monospace">BITMAPINFOHEADER</span>
Line 294 ⟶ 316:
| align="right" bgcolor="white" style="border: thin solid grey" | 4
|}
</div>
 
</div>
<div class="NavEnd">&nbsp;</div>
</div>
 
Nel caso più comune di bitmap nella versione 3 del formato non compresse e senza tavolozza extra per [[Profondità di colore|profondità]] superiori ad 8 [[Bit (informatica)|bit]] per pixel, la dimensione in byte richiesta dal file può essere espressa con la seguente [[formula]] matematica, dove ''w'' ed ''h'' indicano rispettivamente la larghezza e l'altezza dell'immagine in pixel e ''b'' la profondità in bit per pixel.
 
:<math>54+4\left(u\left(15-b\right)\cdot2^{b}+h\left\lceil\frac{w\cdot b}{32}\right\rceil\right)</math>
 
Con <math>u\left(x\right)</math> si è indicata la [[funzione gradino di Heaviside]], il cui valore è 0 per argomenti negativi e 1 per quelli positivi. <math>\lceil x\rceil</math> indica la funzione soffitto, equivalente al [[numero intero]] più piccolo maggiore o uguale all'argomento.
 
La stessa [[Espressione (matematica)|espressione]] si può formulare più semplicemente in [[C (linguaggio)|linguaggio C]] in questo modo:
<pre>
54 + 4 * (((1 << b) & 0xffff) + h * ((w * b + 31) / 32))
</pre>
 
== Vantaggi e svantaggi ==
Una delle caratteristiche essenziali del formato bitmap che ne hanno fatto per molto tempo la fortuna è la velocità con cui le immagini vengono lette o scritte su disco, molto maggiore se paragonata a quella di altri tipi di [[file]], soprattutto sulle macchine più lente. Nelle bitmap non compresse la rappresentazione dei dati nella memoria [[RAM]] è in gran parte simile, spesso identica, a quella dei dati su disco: il [[Microprocessore|processore]] non è costretto ad effettuare calcoli laboriosi durante le operazioni di codifica e di decodifica e il tempo di accesso ai dati è spesso limitato solo dall'[[hardware]] del drive.
 
{| border="1" cellpadding="3" cellspacing="0" style="float: left; margin: 0 1em 0 0"
| align="center" colspan="2" width="1" | Dimensioni in byte della stessa immagine (128 colori) in diversi formati raster
|-
| [[ImmagineFile:Smiley head happy.png]]
|
{| cellpadding="4"
| '''BMP''' non compresso
|
| <table cellpadding="0" cellspacing="0" width="40"><tr><td bgcolor="#cc2222" width="40">&nbsp;</td></tr></table>
{| cellpadding="0" cellspacing="0" width="40"
|-
| bgcolor="#cc2222" width="40" | &nbsp;
|}
| align="right" | 24030
|-
| '''BMP''' compresso
|
| <table cellpadding="0" cellspacing="0" width="15"><tr><td bgcolor="#cc2222" width="15">&nbsp;</td></tr></table>
{| cellpadding="0" cellspacing="0" width="15"
|-
| bgcolor="#cc2222" width="15" | &nbsp;
|}
| align="right" | 8764
|-
| [[Graphics Interchange Format|GIF]]
|
| <table cellpadding="0" cellspacing="0" width="9"><tr><td bgcolor="#cc2222" width="9">&nbsp;</td></tr></table>
{| cellpadding="0" cellspacing="0" width="9"
|-
| bgcolor="#cc2222" width="9" | &nbsp;
|}
| align="right" | 5365
|-
| [[Portable Network Graphics|PNG]]
|
| <table cellpadding="0" cellspacing="0" width="7"><tr><td bgcolor="#bb2222" width="7">&nbsp;</td></tr></table>
{| cellpadding="0" cellspacing="0" width="7"
|-
| bgcolor="#bb2222" width="7" | &nbsp;
|}
| align="right" | 4029
|}
|}
Esiste anche, ma non è molto usata, la possibilità di comprimere le bitmap da 16 e 256 colori con l'[[algoritmo]] [[Run-length encoding|RLE]]. La [[Compressione dei dati|compressione]] RLE non è tuttavia efficiente come altri metodi di [[Compressione dati lossless|compressione lossless]]. Le bitmap, anche quelle compresse, occupano di regola più spazio su disco rispetto ad altri formati [[Grafica raster|raster]] come [[Graphics Interchange Format|GIF]] o [[Portable Network Graphics|PNG]], e sono perciò meno adatte di questi alla trasmissione di immagini via [[Internet]] o alla memorizzazione permanente su [[Compact disc|CD]], [[DVD]] o altri supporti di dati.
 
Una limitazione grave del formato bitmap, almeno nella comune versione 3, è quella di non supportare ''alcun tipo di trasparenza''. Per ovviare a questo problema sono stati messi a punto diversi stratagemmi, come utilizzare un colore speciale per i pixel trasparenti, oppure servirsi di altre bitmap per mascherare le parti invisibili di un'immagine (alcune di queste tecniche sono rintracciabili nella stessa [[Windows API|API di Windows]]), ma nessuno offre la stessa versatilità del [[canale alphaalfa (informatica)|canale alfa]], la cui diffusione è legata soprattutto all'avvento del formato PNG.
 
AncheNonostante con l'inconveniente dellele maggiori dimensioni dei file ede ancheil senza ilmancato supporto per la trasparenza, ci sono altridiversi fattori che hanno contribuito in modo significativo alla popolarità delle bitmap: il formato è semplice, ben documentato e non è tutelato da [[Brevetto|brevetti]] che ne restringano il libero uso. Soprattutto quest'ultimo punto ha fatto sì che il formato bitmap sia oggi supportato da quasi tutte le [[Applicazioneapplicazione (informatica)|applicazioni]] grafiche, inclusi molti programmi [[open source]] anche oltre i confini del mondo [[Microsoft]].
 
== Usi pratici ==
Line 347 ⟶ 369:
 
=== Elaborazione delle immagini ===
Veloci e imgombrantiingombranti, le bitmap si rivelano adatte soprattutto alla memorizzazione temporanea delle immagini che vengono modificate spesso. Molti software di [[scansione]] per Windows salvano le immagini digitalizzate per default come file bitmap.
 
=== Internet ===
Line 356 ⟶ 378:
 
== Bitmap nella programmazione ==
Sui [[Sistema operativo|sistemi operativi]] [[Microsoft Windows|Windows]] le bitmap sono, prima ancora che [[file]], [[Oggetto (informatica)|oggetti]] utilizzati internamente dall'[[interfaccia grafica]] [[Graphics Device Interface|GDI]]. Diversi [[Linguaggio di programmazione|linguaggi di programmazione]] per Windows hanno perciò sviluppato astrazioni specifiche per questo tipo di dati.
 
=== Windows API ===
L'[[API di Windows]] offre sin dalle prime versioni [[Funzione (informatica)|funzioni]] speciali che permettono di effettuare le più semplici operazioni sulle bitmap, come copiare o combinare parti di un'immagine in memoria. Le bitmap sono oggetti GDI così come i ''[[font]]'' (tipi di carattere), i ''brush'' (pennelli) e le ''[[Tavolozza (informatica)|palette]]'' (tavolozze); così come gli altri oggetti di Windows le bitmap vengono manipolate attraverso un' ''handle'', cioè un valore che identifica l'oggetto nell'[[Ambiente (informatica)|ambiente]] di [[Esecuzione (informatica)|esecuzione]]. Dopo essere state create chiamando le apposite funzioni, le bitmap vengono selezionate in un ''device context'', un'entità astratta che serve a comunicare con una [[periferica]] o dispositivo virtuale. In questo modo si possono inviare informazioni ad un [[Display|monitor]] o ad una [[stampante]]. Selezionando una bitmap in un ''device context'' in [[Memoria (informatica)|memoria]] è possibile inoltre chiamare le apposite funzioni GDI per effettuare le più comuni modifiche all'immagine. Per operazioni grafiche più complesse si può accedere direttamantedirettamente alla mappa dei [[pixel]].
 
I [[Linguaggio di programmazione ad alto livello|linguaggi di programmazione ad alto livello]] utilizzano in parte le funzioni API per implementare tecniche di [[programmazione (informatica)|programmazione]] grafica con le bitmap.
 
=== .NET ===
Il [[Framework .NET|.NET Framework]] offre supporto nativo per diversi tipi d'immagini raster, e naturalmente anche per le bitmap tramite la [[Classe (informatica)|classe]] <ttcode>System.Drawing.Image.Bitmap</ttcode>. L'[[Integrated development environment|ambiente di sviluppo]] di [[Visual Studio .NET]] consente di inserire una bitmap sullo sfondo di un [[form]] o componente semplicemente selezionandone il percorso in una lista di proprietà. Questa tecnica, che risale alle primissime incarnazioni di [[Visual Studio]], funzionava all'inizio solo con le bitmap ed è stata poi estesa ad altri tipi d'immagine.
 
=== Java ===
A differenza del .NET Framework che è stato sviluppato dalla [[Microsoft]] soprattutto per Windows, [[Java (linguaggio di programmazione)|Java]] si propronepropone di essere un sistema [[multipiattaforma]], per assicurare che lo stesso [[Programma (informatica)|programma]] funzioni allo stesso modo su tutte le piattaforme dei diversi produttori. Non sorprende perciò che non ci sia in Java, come c'è in .NET, una classe specifica per manipolare il formato Windows bitmap. EsistenoEsistono però e sono reperibili in [[Internet]] alcune [[Libreria software|librerie]] e moduli di programmazione aggiuntivi che implementano queste funzionalità.
 
=== C / C++ ===
Tra le librerie [[C (linguaggio)|C]] [[C++|C++]] degne di nota per la manipolazione di immagini, possiamo trovare [http://freeimage.sf.net FreeImage], libreria [[OpenSourceOpen source]] multipiattaforma, che supporta un grosso numero numero di formati e funzioni.<ref>{{cita web|lingua=en|url=https://freeimage.sourceforge.io|titolo=The FreeImage Project}}</ref>
 
=== Delphi ===
Sin dalla prima edizione di [[Delphi]], è presente nella VCL (Visual Component Library) l'oggetto TBitmap, che permette di manipolare files bitmap. Esistono poi progetti esterni a Delphi, che ampliano le potenzialità e le funzionalità dell'oggetto TBitmap, tra questi ricordiamo Graphics32<ref>{{cita web|lingua=en|url=http://graphics32.org/documentation/Docs/Units/GR32_Image/Classes/TImage32/_Body.htm|titolo=TImage32|sito=Graphics32|urlarchivio=https://web.archive.org/web/20110726130649/http://graphics32.org/documentation/Docs/Units/GR32_Image/Classes/TImage32/_Body.htm}}</ref>, Project JEDI<ref>{{cita web|lingua=en|url=https://www.delphi-jedi.org|titolo=Project JEDI}}</ref> e GLScene<ref>{{cita web|lingua=en|url=http://glscene.sourceforge.net/wikka/HomePage|titolo=GLScene|urlarchivio=https://web.archive.org/web/20101110002948/http://glscene.sourceforge.net/wikka/HomePage}}</ref>.
 
=== Python ===
Anche tramite il linguaggio [[Python|Python]] è possibile manipolare immagini: tra le librerie disponibili, troviamo [PIL<ref>{{cita web|lingua=en|url=http://www.pythonware.com/products/pil/ |titolo=PIL]|urlarchivio=https://web.archive.org/web/20120415045020/http://www.pythonware.com/products/pil/|urlmorto=sì}}</ref> e [httpFreeImagePy<ref>{{cita web|lingua=en|url=https://freeimagepy.sfsourceforge.net |titolo=FreeImagePy]}}</ref>, basata su [http://freeimageFreeImage.sf.net FreeImage]
 
<syntaxhighlight lang="python">
== Bibliografia ==
from CoreGraphics import *
import math
 
# Crea un contesto bitmap RGB, trasperente con sfondo nero 256x256
*''Compressed Image File Formats'' - John Miano, Addison-Wesley Professional, 1999 - ISBN 0201604434
cs = CGColorSpaceCreateDeviceRGB ()
c = CGBitmapContextCreateWithColor (256, 256, cs, (0,0,0,0))
 
# Crea un quadrato giallo con una linea rossa che ne percorre il perimetro
c.saveGState ()
c.setRGBStrokeColor (1,0,0,1) # rosso
c.setRGBFillColor (1,1,0,1) # giallo
c.setLineWidth (3)
c.setLineJoin (kCGLineJoinBevel)
c.addRect (CGRectMake (32.5, 32.5, 191, 191))
c.drawPath (kCGPathFillStroke);
c.restoreGState ()
 
# Aggiunge del testo ruotato
 
c.saveGState ()
c.translateCTM (128, 128)
c.rotateCTM (math.radians(-30.0))
c.translateCTM (-128, -128)
c.setRGBStrokeColor (0,0,0,1)
c.setRGBFillColor (1,1,1,1)
c.selectFont ("Helvetica", 36, kCGEncodingMacRoman)
c.setTextPosition (40, 118)
c.setTextDrawingMode (kCGTextFillStroke)
c.setShadow (CGSizeMake (0,-10), 2)
c.showText ("hello, world", 12)
c.restoreGState ()
 
# Salva l' immagine in formato .png
 
c.writeToFile ("out.png", kCGImageFormatPNG)
 
</syntaxhighlight>
 
==Note==
<references/>
 
== Bibliografia ==
* {{cita libro|autore=James D. Murray|autore2=William vanRyper|titolo=Encyclopedia of Graphics File Formats|edizione=2|capitolo=Microsoft Windows Bitmap|pagine=572-591|editore=O'Reilly|anno=1996|lingua=en|ISBN=1-56592-161-5|url=https://www.fileformat.info/format/bmp/egff.htm|accesso=24 aprile 2023}}
* {{cita libro|cognome=Miano|nome=John|titolo=Compressed image file formats: JPEG, PNG, GIF, XBM, BMP|url=https://archive.org/details/compressedimagef0000mian|città=Reading|editore=Addison Wesley|anno=1999|lingua=en|ISBN=0-201-60443-4}}
 
== Voci correlate ==
*[[ElencoLista di tipiformati di file]]
 
== Altri progetti ==
{{interprogetto}}
 
== Collegamenti esterni ==
* {{FOLDOC|bmp}}
* {{cita web|url=https://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_99ir.asp|titolo=Pagina della MSDN Library sulle bitmap|lingua=en|urlmorto=sì}}
* {{cita web|url=https://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_4v1h.asp|titolo=Struttura delle bitmap|lingua=en|urlmorto=sì}}
* {{cita web|url=http://www.softzone.it/tutorials/showquestion.php?faq=1&fldAuto=24|titolo=Bitmaps, Device Contexts e BitBlt|sito=Softzone|urlmorto=sì|urlarchivio=https://web.archive.org/web/20060506052951/http://www.softzone.it/tutorials/showquestion.php?faq=1&fldAuto=24|dataarchivio=6 maggio 2006}}
* {{cita web|url=http://wvnvaxa.wvnet.edu/vmswww/bmp.html|titolo=Example BMP images|lingua=en|accesso=15 gennaio 2006|urlarchivio=https://web.archive.org/web/20060625100540/http://wvnvaxa.wvnet.edu/vmswww/bmp.html|dataarchivio=25 giugno 2006|urlmorto=sì}}
 
{{Formati di compressione}}
* {{en}} [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_99ir.asp Pagina della MSDN Library sulle bitmap]
* {{en}} [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_4v1h.asp Struttura delle bitmap]
* {{it}} [http://www.softzone.it/tutorials/showquestion.php?faq=1&fldAuto=24 Visualizzare le bitmap con l'API di Windows]
* {{en}} [http://wvnvaxa.wvnet.edu/vmswww/bmp.html Esempi d'immagini BMP in vari formati]
 
{{Portale|informatica}}
[[Categoria: Formati di file grafici]]
 
[[Categoria:Formati di file grafici]]
[[ca:BMP]]
[[cs:BMP]]
[[de:Windows bitmap]]
[[en:Windows bitmap]]
[[es:Windows bitmap]]
[[fr:Windows bitmap]]
[[gl:BMP]]
[[hu:BMP]]
[[id:BMP]]
[[ja:Windows bitmap]]
[[ko:윈도우즈 비트맵]]
[[nl:BMP (bestandsindeling)]]
[[pl:BMP]]
[[pt:Device Independent Bitmap]]
[[sv:BMP]]
[[vi:BMP]]
[[zh:BMP]]