2016-05-01 3 views
0

J'écris un service de traitement d'image en C# qui prend un flux en entrée, redimensionne l'image en utilisant la bibliothèque populaire ImageResizer, puis enregistre le résultat dans AWS S3. Dans le cadre du processus, je crée un hachage MD5 du flux, que je définis comme MD5Digest sur ma demande S3 PUT. Cela signifie qu'AWS va redéfinir le contenu et comparer son MD5 avec celui que j'ai fourni pour s'assurer que l'image n'a pas été corrompue pendant le transport. Cela fonctionne très bien quand je télécharge un fichier sur mon service et le télécharge directement sur S3, mais si je le redimensionne avant de le télécharger sur S3, le hachage du flux de sortie d'ImageResizer ne correspond pas à ce que S3 attend (et oui , J'utilise le hachage de l'image redimensionnée, pas l'image originale)Le hachage de contenu du flux de sortie ImageResizer ne correspond pas à ce qui est attendu

Donc ma question est: y at-il quelque chose dans le flux de sortie ImageResizer autre que le contenu de l'image, et si oui, comment je me débarrasse de cela?

Merci!

Répondre

0

Peu importe, j'ai trouvé le problème. Il s'est avéré que même si j'avais redéfini ResetSourceStream sur l'objet ImageJob, la position du flux n'a pas été réinitialisée à 0 avant de calculer le hachage, ce qui signifie que je recevais toujours la même chose hacher.

La réinitialisation manuelle de la position du flux à 0 avant le calcul du hachage permet de résoudre le problème.