Newsgroup: it.comp.lang.visual-basic
Titolo: Differenza fra immagini

Salve a tutti.
Ho due directory una con  files bmp originali,
l'altra con i files modificati, stesso
nome e stessa risoluzione.
Vorrei che in una terza directory venissero
create le bitmap con le immagini che
risultano essere la differenza
fra le immagini originali e quelle modificate.
Conoscete qualche dll o ocx che fa
sta roba?
Oppure un sito con le specifiche del
formato bitmap cosě lo faccio a manina
se proprio non c'č niente da fare!!
        grazie mille a tutti
                                                danilo

 se proprio non c'č niente da fare!!
Il formato bmp č probabilmente il piů semplice.
Trovi numerose info su MSDN.
Un sito "must" č 
http://www.wotsit.org/
Ma secondo me non ti serve a niente per il tuo scopo: se hai due file bmp
con lo stesso nome č pressochč impossibile sapere se sono la stessa immagine
modificata o due immagini solamente similari e in VB non in tempi
accettabili.
Al massimo ti conviene fare un confronto binario tra i due file e se sono
diversi (indipendentemente dal contenuto) significa che uno dei due č stato
modificato.
Ciao

 ha scritto nel messaggio
news:a6ko50$eisv9$1...@ID-111402.news.dfncis.de...

Sul sito intel esiste una libreria che ti permette di manipolare immagini.
Non mi č ancora capitato di utilizzarla, ma ho visto alcuni demo. Funziona
Ciao Marco

 ha scritto nel messaggio
news:a6ko50$eisv9$1...@ID-111402.news.dfncis.de...

Una volta ho fatto un programmino di texture mapping che lavorava con le
bmp, ed anche se non centra niente con il tuo problema, e' sempre un
bell'esercizio.
Questo e' solo un estratto del progetto.
[...]
    Dim Bidone$, Record$, Testata$, texture$
    Dim Origine$, Maschera$, Risultato$
    Dim Testa%, Tipo%, MisuraX%, MisuraY%, BitColori%
    Dim TestaT%, TipoT%, MisuraXT%, MisuraYT%, BitColoriT%
    Dim Dim1%, Dim3%, Riga1$, Riga3$
    Dim TabImmagine() As Byte
[...]
    Open filei For Binary As #1        'il tuo bmp
'legge intestazione immagine
    Record$ = Space$(4)
    Get #1, 11, Record$: Testa = CVL(Record$)
    Get #1, 15, Record$: Tipo = CVL(Record$)
    Get #1, 19, Record$: MisuraX = CVL(Record$)
    Get #1, 23, Record$: MisuraY = CVL(Record$)
    Record$ = "  "
    Get #1, 29, Record$: BitColori = CVL(Record$)
    Testata$ = Space$(Testa)
    Get #1, 1, Testata$
'lettura immagine
    Bidone$ = Space$(LOF(1) - Testa)
    Get #1, Testa + 1, Bidone$
'    Dim1 = ((LOF(1) - Testa) / MisuraY)
    ReDim TabImmagine(0 To Len(Bidone$))
    TabImmagine = StrConv(Bidone$, vbFromUnicode)
In questo caso, la funzione StrConv viene utilizzata per ottenere un array
di byte relativi ai valori RGB di ogni pixel della bitmap (ti rimando all'F1
per ulteriori chiarimenti sull'uso).
Fai lo stessa cosa con la seconda bitmap, confronta i due array e creane un
terzo, con le differenze tra i primi due.  Per ritornare ad avere un buffer
salvabile dell'immagine fai:
    Bidone$ = StrConv(TabImmagineDif, vbUnicode)
e poi la risalvi con:
    Put #3, 1, Testata$
    Put #3, Testa + 1, Bidone$
    Close
Adesso la palla e' tua... ;)
ciao. buc

 Questo e' solo un estratto del progetto.
:)
già che ci siamo... mai sentito parlare delle strutture?
In particolare:
 BITMAPFILEHEADER
 RGBQUAD
Ciao

 ha scritto nel messaggio
news:Ronj8.58918$Ns4.2...@news2.tin.it...

si le conosco... ma cosi' e' piu' bello e (d)istruttivo  ;)
ciao. buc


Ti ringrazio veramente molto anche perchè è più chiaro il
codice delle specifiche che avevo io.
Il problema è che le immagini sono troppo grosse per
effettuare una cosa a manina, devo per forza utilizzare qualche
dll o automatizzare il lavoro di programmi come PSP o PhotoShop.
Quando dico grosse dico immagini del tipo 10000x5000 pixel
(non sapevo che mi avrebbero mollato simili bestie) e vb è
decisamente troppo lento, per non parlare della quantità di memoria
spropositata
che si mangerebbe l'applicazione (400mb se le mangia velocemente).
Grazie, comunque il codice che mi hai postato secondo me è
più lento del codice Matlab che avevo scritto,  poi proverò
e ti saprò dire.
                                danilo

 e ti saprò dire.
:)
ciao. buc


10.000 * 5.000 = 50.000.000
50Mb * 4 (RGBQUAD) = 200Mb
Ciao

 Ciao
ciao. buc

 Vuoi una dimostrazione?  :-P
No, no, su questo hai ragione: lo faccio anch'io per files grossi :)
Ciao