J'ai une image au format png que je voudrais charger et convertir en flux bmp. Le code que je utilise pour ce faire est la suivante:System.Drawing.Image des données est différent entre l'enregistrement d'un fichier et un flux
// Image.FromFile yields the same result.
FileStream originalFile = File.Open("image.png", FileMode.Open);
System.Drawing.Image fileImage = System.Drawing.Image.FromStream(originalFile);
MemoryStream bmpStream = new MemoryStream();
fileImage.Save(bmpStream, System.Drawing.Imaging.ImageFormat.Bmp);
Résultat: https://pastebin.com/raw/p1TBjnD1
Cependant, le flux ce produit est différent lors de l'enregistrement dans un fichier et l'ouvrir comme ceci:
FileStream originalFile = File.Open("image.png", FileMode.Open);
System.Drawing.Image fileImage = System.Drawing.Image.FromStream(originalFile);
FileStream bmpStream;
fileImage.Save("image.bmp", System.Drawing.Imaging.ImageFormat.Bmp);
bmpStream = File.Open("image.bmp", FileMode.Open);
Résultat: https://pastebin.com/raw/vSdRwZpL
Il semble y avoir une sorte de tête manquant lors de l'enregistrement d'un flux. Pourquoi est-ce, et comment puis-je facilement l'ajouter à mes flux sans avoir à enregistrer dans des fichiers?
Ma question n'est pas comment faire cela, mais pourquoi le flux n'inclut pas cet en-tête pendant que le fichier le fait.
Copie possible de [System.Drawing.Image pour diffuser C#] (https://stackoverflow.com/questions/1668469/system-drawing-image-to-stream-c-sharp) –
Je ne pense pas , c'est une question concernant pourquoi la sortie est différente pas comment le faire. – Cryru
Pouvez-vous télécharger l'original png quelque part afin que nous puissions nous tester avec le même ensemble de données? –