D'obtenir une Image de l'objet à partir d'un tableau d'octets
J'ai un tableau d'octets d'une image (stockées dans la base de données). Je veux créer un objet Image, créer plusieurs Images de différentes tailles et de les stocker en arrière dans la base de données (enregistrer dans un tableau d'octets).
Je ne suis pas inquiet au sujet de la base de données de la partie, ou le redimensionnement. Mais est-il un moyen facile de charger une Image de l'objet sans enregistrer le fichier sur le système de fichiers, puis de le mettre dans un tableau d'octets quand je suis fait de la redimensionner? J'aimerais faire tout cela en mémoire, si je peux.
Something like:
Image myImage = new Image(byte[]);
or
myImage.Load(byte[]);
OriginalL'auteur Dan Williams | 2010-07-20
Vous devez vous connecter pour publier un commentaire.
Vous souhaitez utiliser un MemoryStream pour ce faire:
Merci d'éditer votre question à l'inclure.
Je l'ai eu 🙂 Merci d'Image.Enregistrer(Stream, ImageFormat) - msdn.microsoft.com/en-us/library/ms142147.aspx
Cette réponse n'est pas tout à fait correct, vous êtes la lecture de l'image à partir de flux et de fermer ce volet par la suite. Selon MSDN, vous devez garder le flux ouvert pour la durée de vie de l'Image. Et pour certains formats d'image (pas tous) vous avez certainement besoin. Donc bonne méthode est de créer une nouvelle image à partir d'une image chargée, et puis les disposer à la fois d'un signal et de l'image d'origine.
Édité pour mettre "img" en utilisant(){} bloc. J'avais momentanément oublié que c'était IDisposable. (Bien que cela soit probablement bien fonctionner si vous n'avez pas...) Merci!
OriginalL'auteur Dave Markle
En fonction de vos commentaires à une autre réponse, vous pouvez essayer ce pour effectuer une transformation sur une image stockée dans un
byte[]
puis de retourner le résultat sous la forme d'un autrebyte[]
.Cela vous permettra de passer dans la
byte[]
stockées dans la base de données, effectuer que les transformations que vous devez, ensuite, de retour d'un nouveaubyte[]
qui peut être stocké dans la base de données.OriginalL'auteur Adam Robinson
Seulement de répondre à la première moitié de la question: c'est un one-liner solution qui fonctionne très bien pour moi avec un tableau d'octets qui contient une image d'un fichier JPEG.
EDIT:
Et voici un peu plus avancé solution: https://stackoverflow.com/a/16576471/253938
OriginalL'auteur RenniePet
Je pensais ajouter cela comme une réponse à la rendre plus visible.
Avec l'enregistrement d'un tableau d'octets:
OriginalL'auteur