Comment associer un tableau d'octets à une image dans WPF avec un convertisseur de valeur?
Je suis en train de lier un tableau d'Octets à partir de mon databse à WPF Image.
Mon XAML:
<Window.Resources>
<local:BinaryImageConverter x:Key="imgConverter" />
</Window.Resources>
...
<Image Source="{Binding Path=ImageData, Converter={StaticResource imgConverter}}" />
J'ai modifié le code publié par Ryan Cromwell pour une valeur converter:
Class BinaryImageConverter
Implements IValueConverter
Private Function Convert(ByVal value As Object, ByVal targetType As Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.Convert
If value IsNot Nothing AndAlso TypeOf value Is Byte() Then
Dim bytes As Byte() = TryCast(value, Byte())
Dim stream As New MemoryStream(bytes)
Dim image As New BitmapImage()
image.BeginInit()
image.StreamSource = stream
image.EndInit()
Return image
End If
Return Nothing
End Function
Private Function ConvertBack(ByVal value As Object, ByVal targetType As Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.ConvertBack
Throw New Exception("The method or operation is not implemented.")
End Function
End Class
La jemage.EndInit()
ligne de la BinaryImageConverter Convert() fonction lance cette NotSupportedException:
"Pas de composante d'imagerie adapté à
effectuer cette opération a été trouvé."InnerException: "Exception de
HRESULT: 0x88982F50"
Je ne comprends pas ce que je fais mal. Comment puis-je obtenir ce travail?
Mise à jour
Il semble que le problème a été les octets en provenance de la base de données. Il doit y avoir eu un problème avec la façon dont j'ai été mettant en.
Voir mon code de travail ci-dessous.
source d'informationauteur Zack Peterson
Vous devez vous connecter pour publier un commentaire.
Vous peut lier un byte[] à une Image.
Voici un Échantillon:
Xaml:
Code:
Merci à tous pour votre aide. J'ai reçu aujourd'hui. Je ne sais pas encore exactement quel était le problème.
C'est comment mettre des images dans ma base de données...
C'est ma valeur convertisseur utilisé pour lier un tableau d'Octets d'une Image...
C'est mon XAML qui utilise le convertisseur d'affichage de l'image...
Essayez d'utiliser cette
J'imagine que les octets ne sont pas légitimes format de l'image. Je crois que le code d'erreur correspond à
WINCODEC_ERR_COMPONENTNOTFOUND
ce qui serait cohérent avec les octets invalides.Quel est le format du tableau d'octets, censé être? Pouvez vous enregistrer sur le disque dur, et essayez de l'ouvrir avec un autre programme d'imagerie?
Je crois que c'est effectivement un problème d'autorisation de sécurité. Essayez d'exécuter avec des privilèges d'administrateur, et de voir si cela fonctionne, et à partir de là.
EDIT: je suis en désaccord avec le downvote et de commentaires. Jetez un oeil à ce lien:
http://social.expression.microsoft.com/Forums/en-US/wpf/thread/617f6711-0373-44cc-b72c-aeae20f0f7a8/
Cet utilisateur a eu exactement la même erreur, et elle a été causée par les paramètres de sécurité. Donc, je maintiens ma réponse (qui peut ne pas être la cause, mais il est certainement la peine d'essayer)