J'ai affaire à des bitmaps dans mon application et pour certaines raisons, j'ai besoin de créer une copie profonde de l'image bitmap. Existe-t-il une manière élégante de le faire?Comment créer une copie en profondeur Bitmap
J'ai essayé
Bitmap deepCopy = original.Clone();
, bien apparemment, cela ne crée pas une copie en profondeur, mais peu profonde. Ma prochaine tentative était de créer une nouvelle image
Bitmap deepCopy = new Bitmap(original);
Malheureusement, ce constructeur est Bitmap (Image), non Bitmap (Bitmap) et Bitmap (Image) vous permet de convertir ma belle 8bppIndexed PixelFormat dans un autre.
Une autre tentative d'utilisation d'un MemoryStream
public static Bitmap CreateBitmapDeepCopy(Bitmap source)
{
Bitmap result;
using (MemoryStream stream = new MemoryStream())
{
source.Save(stream, ImageFormat.Bmp);
stream.Seek(0, SeekOrigin.Begin);
result = new Bitmap(stream);
}
return result;
}
Eh bien, cela ne fonctionne pas non plus, puisque le MemoryStream doit être ouvert pendant toute la vie de Bitmap. Donc, j'ai résumé tous mes deadends et j'aimerais vraiment voir une façon élégante de créer une copie en profondeur Bitmap. Merci pour cela :)
Fonctionne merveilleusement pour moi. Pas besoin de sérialiser/dé-sérialiser par nous même. – Marcel
Pour une bonne discussion des diverses options de clonage bitmap, y compris la façon dont ces options fonctionnent et fonctionnent, voir [cette réponse SO] (http://stackoverflow.com/a/13935966/3367144). – kdbanman
Ce n'est pas une copie profonde. Ce qui suit semble fonctionner pour moi http://stackoverflow.com/questions/43039099/creating-a-completely-new-copy-of-bitmap-from-a-bitmap-in-c-sharp/43042865#43042865 – Ultraviolet