[gelöst] Änderungen im QImage feststellen.

Alles rund um die Programmierung mit Qt
Antworten
Marc Schubert
Beiträge: 30
Registriert: 18. Mai 2005 10:00
Wohnort: Hannover

[gelöst] Änderungen im QImage feststellen.

Beitrag von Marc Schubert »

Hallo Zusammen,

wie kann ich feststellen ob sich in einem QImage was geändert hat? Bei meinem Programm werden Bilder per Netzwerk übertragen. Ich möchte nun vermeiden Images zu übertragen in denen sich nichts geändert hat.

Gibt es sowas wie eine Checksummen überprüfung für QImages?

Mit freundlichen Grüßen

Marc Schubert
Zuletzt geändert von Marc Schubert am 20. Mai 2005 16:04, insgesamt 1-mal geändert.
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Also bei Qt selber (vielleicht) nicht, aber Qt beinhaltet libz bzw. hat deren Abhängigkeit, da gibts einen CRC und einen Adler32 Check, damit sollte das bestimmt auch gehen, oder? Außerdem kann man ja gleich einige Tests fahren, z.B. Änderungsdatum und Adler32. Wobei du sicherlich auch sowas wie md5 nehmen kannst.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Wenn man die Qt-Sourcen hat (es reichen die qmake-sourcen), ist eine Datei qtmd5.cpp/.h dabei (qt-3/qmake), welche md5-Funktionalität bereitstellt.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Marc Schubert
Beiträge: 30
Registriert: 18. Mai 2005 10:00
Wohnort: Hannover

[gelöst] Änderungen im QImage feststellen

Beitrag von Marc Schubert »

Hallo,

und danke für die Typs. Ich verwede jetzt Adler32 da dies nur eine einfach Funktion ist war sie sehr einfach einzubinden.

Für alle die das auch mal brauchen könnten ein kleiner schnipsel

Code: Alles auswählen

Q_UINT32 returnAdler32( unsigned char *buf, int len)
{
   unsigned long s1 = 1;
   unsigned long s2 = 0;
   
   for (int n = 0; n < len; n++)
   {
      s1 = (s1 + buf[n]) % 65521;  /* größte primzahl kleiner als 65536 */
      s2 = (s2 + s1) % 65521;
   }
   
   return( (s2 << 16) + s1 );
} 
Mit freundlichen Gruß

Marc Schubert
Antworten