Oppure

Loading
30/11/08 18:00
I)eathBringer
Sto creando un programma per visualizzare e modificare le immagini e volevo che, se si cerca di chiudere il programma (o semplicemente l'immagine), se l'immagine visualizzata è diversa da quella originale, mi appaia una msgbox per avvertirmi che l'immagine non è stata salvata. Ad esempio, se applico il negativo all'immagine visualizzata e provo a chiuderla mi chiederà se la voglio salvare mentre riapplicandogli il negativo ridiventa uguale a quella di partenza e, provando a chiuderla, non mi darà nessun messaggio.
Ho provato a confrontare le due immagini in vari modi ma senza nessun risultato. Qui ne trascrivo due:
modimg = immagine modificata
PictureBox1.Name = percorso dell'immagine iniziale
StartImage = immagine di partenza

If Not modimg.Equals(Bitmap.FromFile(PictureBox1.Name)) Then
'...


If Not modimg.Equals(StartImage) Then
'...


il primo non mi dà nessun risultato;
il secondo mi considera le immagini uguali solo se non vengono modificate nemmeno una volta.
Come posso fare?
aaa
30/11/08 18:26
Gianluca87
ciao, io fare un controllo pixel per pixel
al primo pixel diverso segnala l'errore
aaa
01/12/08 16:04
Il Totem
In effetti, il controllo pixel-pixel è la strada più immediata, ma il metodo GetPixel della classe Bitmap è particolarmente lento, e già su immagini da 400x320 il tempo di elaborazione è di qualche secondo. Io ti suggerisco di lasciare com'è, ma se proprio vuoi continuare, usa una variabile temporanea che tenga traccia dei cambiamenti. Se solo il negativo riporta l'immagine a com'era precedentemente, basta usare un valore booleano per il negativo e uno per tutte le altre modifiche. In alternativa, puoi progettare una logica che usi valori e operazioni aritmetiche in modo che la funzione negativo applicata due volte dia lo stesso risultato che si aveva prima dei filtri (ad esempio la moltiplicazione per -1).
Ultima modifica effettuata da Il Totem 01/12/08 16:04
aaa