Windows bitmap: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m Corretto il collegamento Raster con Grafica raster (DisamAssist)
 
(41 versioni intermedie di 28 utenti non mostrate)
Riga 1:
{{NN|informatica|aprile 2023}}
{{Formato file
| nome = Windows bitmap (BMP) / Device-independent bitmap (DIB)
| logo =
| icona =
| immagine =
| didascalia =
| estensione = .bmp, .dib
| mimemagic_number =
|mime = image/bmp
| typecode =
|uniform_type_identifier = com.microsoft.bmp
| sviluppatore = [[Microsoft]]
| proprietariotypecode =
| sviluppatore = [[Microsoft]]
| licenza = Libero da brevetti
| data_rilascioproprietario =
|licenza = Microsoft Open Specification Promise
| ultima_versione =
|data_rilascio =
| data_ultima_versione =
| ultima_versione =
| genere = [[immagine raster|immagini raster]] senza compressione / [[Run-length encoding|RLE]]
| data_ultima_versione =
| compressione = [[Compressione dati senza perdita|Lossless]]
|genere = [[Grafica raster]]
| estensione_di =
|compressione = lossless
| esteso_a =
| standardestensione_di =
| apertoesteso_a =
|standard =
| sito = www.microsoft.com
|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]] e [[OS/2]]. 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 38 ⟶ 41:
 
=== 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 alfa (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 [[applicazione (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>)
Line 61 ⟶ 63:
| align="left" | eventualmente: spazio inutilizzato
|}
</center>
Struttura di una bitmap
</div>
Line 83 ⟶ 84:
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 aritmeticamatematica|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))
Line 100 ⟶ 101:
| style="font-family:monospace" | [[Word]]
| bfType
| la [[Stringa (informatica)|stringa]] [[ASCII]] <span style="font-family:monospace">"BM"</span> (valore decimale 1977816973, esadecimale 424D)
|-
| 2
| style="font-family:monospace" | [[Dword]]
| bfSize
| dimensione del file (''non affidabile!'')
|-
| 6
Line 317 ⟶ 318:
 
== 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"
Line 358 ⟶ 359:
|}
|}
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 alfa (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 [[applicazione (informatica)|applicazioni]] grafiche, inclusi molti programmi [[open source]] anche oltre i confini del mondo [[Microsoft]].
 
== Usi pratici ==
Line 385 ⟶ 386:
 
=== .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 propone 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. Esistono 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++]] degne di nota per la manipolazione di immagini, possiamo trovare [http://freeimage.sf.net 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>, [httpProject 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 [httpFreeImagePy<ref>{{cita web|lingua=en|url=https://freeimagepy.sfsourceforge.net |titolo=FreeImagePy]}}</ref>, basata su [http://freeimageFreeImage.sf.net FreeImage]
 
<sourcesyntaxhighlight lang="python">
from CoreGraphics import *
import math
Line 436 ⟶ 437:
c.writeToFile ("out.png", kCGImageFormatPNG)
 
</syntaxhighlight>
</source>
 
==Note==
Line 442 ⟶ 443:
 
== 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}}
*''Compressed Image File Formats'' - John Miano, Addison-Wesley Professional, 1999 - ISBN 0-201-60443-4
 
== Voci correlate ==
*[[ElencoLista di tipiformati di file]]
*[[STDU Viewer]]
 
== Altri progetti ==
Riga 453:
 
== Collegamenti esterni ==
* {{FOLDOC|bmp}}
* {{en}}cita [httpweb|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ì}}
* {{en}}cita [httpweb|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]
* [http://www.softzone.it/tutorials/showquestion.php?faq=1&fldAuto=24 Visualizzare le bitmap con l'API di Windows]
* [http://www.extension.info/it/file-extension-bmp Estensione del file BMP]
* {{en}} [http://wvnvaxa.wvnet.edu/vmswww/bmp.html Esempi d'immagini BMP in vari formati]
 
{{Portale|informatica}}
 
{{Formati di compressione}}
{{Estensioni}}
 
[[Categoria:Formati di file grafici]]