Windows bitmap: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Ft1 (discussione | contributi) mNessun oggetto della modifica |
m Corretto il collegamento Raster con Grafica raster (DisamAssist) |
||
(167 versioni intermedie di oltre 100 utenti non mostrate) | |||
Riga 1:
{{NN|informatica|aprile 2023}}
{{Formato file
|logo =
|icona =
|immagine =
|didascalia =
|estensione = .bmp, .dib
|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''').
== Caratteristiche ==
Sono state sviluppate tre versioni del formato bitmap. La prima e più comunemente utilizzata è la versione 3: non esistono versioni antecedenti. Le versioni successive 4 e 5 si incontrano
=== Versione 3 ===
Il [[formato di file]] Windows bitmap nella versione 3 permette operazioni di lettura e scrittura molto veloci e senza perdita di qualità, ma richiede generalmente una maggior quantità di [[Memoria (informatica)|memoria]] rispetto ad altri formati analoghi.
Le immagini bitmap possono avere una [[Profondità di colore|profondità]] di 1, 4, 8, 16, 24 o 32 [[Bit (informatica)|bit]] per [[pixel]]. Le bitmap con 1, 4 e 8 bit contengono una [[Tavolozza (informatica)|tavolozza]] per la conversione dei (rispettivamente 2, 16 e 256) possibili indici numerici nei rispettivi colori.
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
La versione 3 del formato non supporta il [[canale
=== 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
== Struttura ==
<div class="thumb tright">
<div class="thumbcaption">
{| 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 46 ⟶ 63:
| align="left" | eventualmente: spazio inutilizzato
|}
Struttura di una bitmap
</div>
Line 53 ⟶ 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
; mappa dei pixel : Questa
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>
===Struttura dettagliata===
{| class="wikitable"
! colspan="4" align="center" bgcolor="#FFEFD5" | <span style="font-family:monospace">BITMAPFILEHEADER</span> (dimensione: 14 byte)
|-
Line 77 ⟶ 99:
|-
| 0
| style="font-family:monospace" | [[Word
| bfType
| la [[Stringa (informatica)|stringa]] [[ASCII]] <span style="font-family:monospace">"BM"</span> (valore decimale
|-
| 2
| style="font-family:monospace" | [[Dword
| bfSize
| dimensione del file (''non affidabile
|-
| 6
| style="font-family:monospace" | [[Dword
| bfReserved
| 0
|-
| 10
| style="font-family:monospace" | [[Dword
| bfOffBits
| offset del primo byte della mappa dei [[pixel]] a partire dall'inizio del file
|}
{| class="wikitable"
! colspan="4" align="center" bgcolor="#FFEFD5" | <span style="font-family:monospace">BITMAPINFOHEADER</span> (dimensione: 40 byte)
|-
Line 106 ⟶ 128:
|-
| 0
| style="font-family:monospace" | [[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
| style="font-family:monospace" | [[Long integer|LONG]]
| biWidth
| larghezza dell'immagine in [[pixel]]
|-
| 8
| style="font-family:monospace" | [[Long integer|LONG]]
| biHeight
| Corrisponde in [[valore assoluto]] all'altezza dell'immagine in [[pixel]]:
; quando il valore
; 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
| biPlanes
| sempre 1
|-
| 14
| style="font-family:monospace" | [[Word
| biBitCount
| [[profondità
|-
| 16
| style="font-family:monospace" | [[Dword
| biCompression
| uno dei seguenti valori:
; 0 (<span style="font-family:monospace">BI_RGB</span>) : La mappa dei [[pixel
; 1 (<span style="font-family:monospace">BI_RLE8</span>) : La mappa dei [[pixel]] è compressa con l'[[algoritmo]] [[Run-length encoding|RLE]] per 8 [[Bit (informatica)|bit]] per pixel. Valido solo per biBitCount = 8 e biHeight > 0.
; 2 (<span style="font-family:monospace">BI_RLE4</span>) : La mappa dei [[pixel]] è compressa con l'[[algoritmo]] [[Run-length encoding|RLE]] per 4 [[Bit (informatica)|bit]] per pixel. Valido solo per biBitCount = 4 e biHeight > 0.
; 3 (<span style="font-family:monospace">BI_BITFIELDS</span>) : La mappa dei [[pixel]] non è compressa ed è codificata secondo maschere di colore personalizzate. Valido solo per biBitCount = 16 o 32; poco comune.
Nella versione 5 del formato sono ammessi inoltre i seguenti valori:
; 4 (<span style="font-family:monospace">BI_JPEG</span>) : La bitmap incapsula un'immagine in formato [[Joint Photographic Experts Group|JPEG]].
Line 148 ⟶ 170:
|-
| 20
| style="font-family:monospace" | [[Dword
| biSizeImage
|
Indica la
|-
| 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
| biClrUsed
|
; quando biBitCount = 1 : 0
; quando biBitCount = 4 o 8 : numero di corrispondenze effettivamente utilizzate nella tavolozza dei colori; 0 indica il numero massimo (16 o 256).
; altrimenti : numero di corrispondenze nella tavolozza dei colori (0 = nessuna tavolozza). Per [[Profondità di colore|profondità]] maggiori di 8 [[Bit (informatica)|bit]] per [[pixel]] la tavolozza non è normalmente necessaria, ma quando c'è può essere usata dal sistema o da alcuni programmi per ottimizzare la rappresentazione dell'immagine.
|-
| 36
| style="font-family:monospace" | [[Dword
| biClrImportant
|
Line 180 ⟶ 202:
:; altrimenti : 0
|}
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.
{| style="text-align: left;"
! style="border: thin solid grey" | <span style="font-family:monospace">BITMAPINFOHEADER</span>
! style="border: thin solid grey" | <span style="font-family:monospace">BITMAPV4HEADER</span>
! style="border: thin solid grey" | <span style="font-family:monospace">BITMAPV5HEADER</span>
| ''byte''
|- bgcolor="#eeffee"
| style="border: thin solid grey" | biSize
| style="border: thin solid grey" | bV4Size
| style="border: thin solid grey" | bV5Size
| align="right" bgcolor="white" style="border: thin solid grey" | 4
|- bgcolor="#eeffee"
| style="border: thin solid grey" | biWidth
| style="border: thin solid grey" | bV4Width
| style="border: thin solid grey" | bV5Width
| align="right" bgcolor="white" style="border: thin solid grey" | 4
|- bgcolor="#eeffee"
| style="border: thin solid grey" | biHeight
| style="border: thin solid grey" | bV4Height
| style="border: thin solid grey" | bV5Height
| align="right" bgcolor="white" style="border: thin solid grey" | 4
|- bgcolor="#eeffee"
| style="border: thin solid grey" | biPlanes
| style="border: thin solid grey" | bV4Planes
| style="border: thin solid grey" | bV5Planes
| align="right" bgcolor="white" style="border: thin solid grey" | 2
|- bgcolor="#eeffee"
| style="border: thin solid grey" | biBitCount
| style="border: thin solid grey" | bV4BitCount
| style="border: thin solid grey" | bV5BitCount
| align="right" bgcolor="white" style="border: thin solid grey" | 2
|- bgcolor="#eeffee"
| style="border: thin solid grey" | biCompression
| style="border: thin solid grey" | bV4V4Compression
| style="border: thin solid grey" | bV5Compression
| align="right" bgcolor="white" style="border: thin solid grey" | 4
|- bgcolor="#eeffee"
| style="border: thin solid grey" | biSizeImage
| style="border: thin solid grey" | bV4SizeImage
| style="border: thin solid grey" | bV5SizeImage
| align="right" bgcolor="white" style="border: thin solid grey" | 4
|- bgcolor="#eeffee"
| style="border: thin solid grey" | biXPelsPerMeter
| style="border: thin solid grey" | bV4XPelsPerMeter
| style="border: thin solid grey" | bV5XPelsPerMeter
| align="right" bgcolor="white" style="border: thin solid grey" | 4
|- bgcolor="#eeffee"
| style="border: thin solid grey" | biYPelsPerMeter
| style="border: thin solid grey" | bV4YPelsPerMeter
| style="border: thin solid grey" | bV5YPelsPerMeter
| align="right" bgcolor="white" style="border: thin solid grey" | 4
|- bgcolor="#eeffee"
| style="border: thin solid grey" | biClrUsed
| style="border: thin solid grey" | bV4ClrUsed
| style="border: thin solid grey" | bV5ClrUsed
| align="right" bgcolor="white" style="border: thin solid grey" | 4
|- bgcolor="#eeffee"
| style="border: thin solid grey" | biClrImportant
| style="border: thin solid grey" | bV4ClrImportant
| style="border: thin solid grey" | bV5ClrImportant
| align="right" bgcolor="white" style="border: thin solid grey" | 4
|-
| rowspan="13" |
| bgcolor="#ffffee" style="border: thin solid grey" | bV4RedMask
| bgcolor="#ffffee" style="border: thin solid grey" | bV5RedMask
| align="right" bgcolor="white" style="border: thin solid grey" | 4
|- bgcolor="#ffffee"
| style="border: thin solid grey" | bV4GreenMask
| style="border: thin solid grey" | bV5GreenMask
| align="right" bgcolor="white" style="border: thin solid grey" | 4
|- bgcolor="#ffffee"
| style="border: thin solid grey" | bV4BlueMask
| style="border: thin solid grey" | bV5BlueMask
| align="right" bgcolor="white" style="border: thin solid grey" | 4
|- bgcolor="#ffffee"
| style="border: thin solid grey" | bV4AlphaMask
| style="border: thin solid grey" | bV5AlphaMask
| align="right" bgcolor="white" style="border: thin solid grey" | 4
|- bgcolor="#ffffee"
| style="border: thin solid grey" | bV4CSType
| style="border: thin solid grey" | bV5CSType
| align="right" bgcolor="white" style="border: thin solid grey" | 4
|- bgcolor="#ffffee"
| style="border: thin solid grey" | bV4Endpoints
| style="border: thin solid grey" | bV5Endpoints
| align="right" bgcolor="white" style="border: thin solid grey" | 36
|- bgcolor="#ffffee"
| style="border: thin solid grey" | bV4GammaRed
| style="border: thin solid grey" | bV5GammaRed
| align="right" bgcolor="white" style="border: thin solid grey" | 4
|- bgcolor="#ffffee"
| style="border: thin solid grey" | bV4GammaGreen
| style="border: thin solid grey" | bV5GammaGreen
| align="right" bgcolor="white" style="border: thin solid grey" | 4
|- bgcolor="#ffffee"
| style="border: thin solid grey" | bV4GammaBlue
| style="border: thin solid grey" | bV5GammaBlue
| align="right" bgcolor="white" style="border: thin solid grey" | 4
|-
| rowspan="4" |
| bgcolor="#fff7ee" style="border: thin solid grey" | bV5Intent
| align="right" bgcolor="white" style="border: thin solid grey" | 4
|-
| bgcolor="#fff7ee" style="border: thin solid grey" | bV5ProfileData
| align="right" bgcolor="white" style="border: thin solid grey" | 4
|-
| bgcolor="#fff7ee" style="border: thin solid grey" | bV5ProfileSize
| align="right" bgcolor="white" style="border: thin solid grey" | 4
|-
| bgcolor="#fff7ee" style="border: thin solid grey" | bV5Reserved
| align="right" bgcolor="white" style="border: thin solid grey" | 4
|}
== 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,
{| border="1" cellpadding="3" cellspacing="0" style="float: left; margin: 0 1em 0 0"
| align="center" colspan="2
|-
| [[
|
{| cellpadding="4"
| '''BMP''' non compresso
|
{| cellpadding="0" cellspacing="0" width="40"
|-
| bgcolor="#cc2222" width="40" |
|}
| align="right" | 24030
|-
| '''BMP''' compresso
|
{| cellpadding="0" cellspacing="0" width="15"
|-
| bgcolor="#cc2222" width="15" |
|}
| align="right" | 8764
|-
| [[Graphics Interchange Format|GIF]]
|
{| cellpadding="0" cellspacing="0" width="9"
|-
| bgcolor="#cc2222" width="9" |
|}
| align="right" | 5365
|-
| [[Portable Network Graphics|PNG]]
|
{| cellpadding="0" cellspacing="0" width="7"
|-
| bgcolor="#bb2222" width="7" |
|}
| 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
== Usi pratici ==
Seppure sotto molti aspetti antiquato e superato, il formato d'immagine bitmap detiene per ragioni storiche e di [[retrocompatibilità]] un primato sui [[Sistema operativo|sistemi]] [[Microsoft Windows|Windows]]. È per questa circostanza, legata alla popolarità di Windows per i [[personal computer]], che le bitmap continuano ad essere tutt'oggi utilizzate e diffuse, benché siano disponibili per quasi tutte le esigenze alternative migliori.
=== Elaborazione delle immagini ===
Veloci e
=== Internet ===
Il formato bitmap appare poco adeguato ad [[Internet]] per diverse ragioni:
* Le immagini bitmap sono più grandi in termini di [[Memoria (informatica)|memoria]] rispetto alle loro equivalenti in altri formati, perciò richiedono più tempo per la trasmissione.
* Sui sistemi operativi diversi da Windows, molti [[browser]] e [[Client di posta|client di posta elettronica]] non sono in grado di
* Il formato bitmap, almeno nella comune versione 3, non supporta alcun tipo di trasparenza, ponendo limiti alle possibilità del [[web design]].
== 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
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]] <
=== Java ===
A differenza del .NET Framework che è stato sviluppato dalla [[Microsoft]] soprattutto per Windows, [[Java (linguaggio di programmazione)|Java]] si
===
Tra le librerie [[C (linguaggio)|C]] [[C++]] degne di nota per la manipolazione di immagini, possiamo trovare FreeImage, libreria [[Open source]] multipiattaforma, che supporta un grosso 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]] è 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 FreeImagePy<ref>{{cita web|lingua=en|url=https://freeimagepy.sourceforge.net|titolo=FreeImagePy}}</ref>, basata su FreeImage.
<syntaxhighlight lang="python">
from CoreGraphics import *
import math
# Crea un contesto bitmap RGB, trasperente con sfondo nero 256x256
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 ==
*[[
== 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}}
{{Portale|informatica}}
[[Categoria:Formati di file grafici]]
|