Immer ein Image-Objekt aus einem byte-array
Ich habe ein byte-array zu einem Bild (gespeichert in der Datenbank). Ich erstellen ein Bild-Objekt, erstellen Sie mehrere Bilder in verschiedenen Größen und speichern Sie Sie zurück in die Datenbank (speichern Sie es zurück zu einem byte-array).
Ich bin nicht besorgt über das Datenbank-Teil, oder die Größenänderung. Aber gibt es eine einfache Möglichkeit, ein Bild zu laden-Objekt ohne speichern der Datei auf die Datei system, und dann stellen Sie es zurück in ein byte-array, wenn ich fertig bin Größenänderung? Ich würde gerne tun es alle in Erinnerung, wenn ich kann.
Something like:
Image myImage = new Image(byte[]);
or
myImage.Load(byte[]);
InformationsquelleAutor Dan Williams | 2010-07-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Sie verwenden würden, ein MemoryStream, um dies zu tun:
Bitte Bearbeiten Sie Ihre Frage enthalten ist.
Ich habe es 🙂 Danke Bild.Save(Stream, ImageFormat) - msdn.microsoft.com/en-us/library/ms142147.aspx
Diese Antwort ist so nicht ganz richtig, Sie Lesen Bild vom Strom und schließen Sie das stream hinterher. Laut MSDN müssen Sie halten den stream öffnen für die Lebensdauer des Bildes. Und für einige Bild-Formate (nicht alle), müssen Sie auf jeden Fall. So richtige Methode ist das erstellen neuer Bitmap aus der geladenen Bild, und dann entsorgen Sie beides stream und original Bild.
Bearbeitet zu setzen "img" in ein using () {} - block. Ich hatte kurzzeitig vergessen, es war IDisposable. (Obwohl es wahrscheinlich funktionieren, wenn Sie nicht...) - vielen Dank!
InformationsquelleAutor Dave Markle
Basierend auf Ihre Kommentare zu einer anderen Antwort, können Sie versuchen, diese für die Durchführung einer transformation auf ein Bild, das gespeichert ist in einer
byte[]
dann wieder das Ergebnis als weiteresbyte[]
.Wird diese ermöglichen es Ihnen, pass in die
byte[]
in der Datenbank gespeichert sind, ausführen, was auch immer Transformationen, die Sie brauchen, dann wieder einen neuenbyte[]
können, werden wieder in die Datenbank gespeichert.InformationsquelleAutor Adam Robinson
Nur die Beantwortung der ersten Hälfte der Frage: Hier ist ein one-liner-Lösung, die funktioniert gut für mich mit einem byte-array, das ein Bild enthält eine JPEG-Datei.
BEARBEITEN:
Und hier ist eine etwas erweiterte Lösung: https://stackoverflow.com/a/16576471/253938
InformationsquelleAutor RenniePet
Ich dachte, ich würde hinzufügen, das als Antwort, um es besser sichtbar zu machen.
Mit dem speichern zurück in ein byte-array:
InformationsquelleAutor