IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Presentation Foundation Discussion :

Fichier WMP(HD Photo) avec miniature intégré, probleme de header ? Bug étrange ?


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 21
    Par défaut Fichier WMP(HD Photo) avec miniature intégré, probleme de header ? Bug étrange ?
    Bonjour,

    J'ai un petit problème assez étrange qui est parfois difficile à reproduire.

    Lorsque que je convertis une série d'images au format WDP (hdphoto) et que j'ajoute une miniature intégrée dans chaque image , j'obtiens ensuite un bug étrange lorsque j'ajoute ces images dans un listview.
    "Impossible de décoder l’image. Son en-tête est peut-être endommagé."

    Le problème ne se produit pas quand je ne met pas de miniature intégrée.

    Je ne vois pas vraiment d'où proviens le problème, peut être que je m'y prend mal pour ajouter cette miniature !

    Pour que le bug se produise plus facilement il faut un listview virtualisé, utiliser une centaine d'images et ensuite scroller très vite.

    Voici le code
    Merci pour votre aide :

    Fichier XAML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     <ListView Name="listView1" >
                <ListView.ItemsPanel>
                    <ItemsPanelTemplate>
     
                        <VirtualizingStackPanel></VirtualizingStackPanel>
     
                    </ItemsPanelTemplate>
                </ListView.ItemsPanel>
            </ListView>
            <Button  Margin="14,14,0,0" Width="52" Height="25" VerticalAlignment="Top" Name="Button1">Test</Button>
    Le code en VB Net :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click
            'Step 1 create a lot of WDP file with thumbnail
            Dim path As String = "c:\test\"
            For i As Integer = 0 To 100
                Dim image As BitmapDecoder = BitmapDecoder.Create(New Uri(path & "test.jpg"), BitmapCreateOptions.None, BitmapCacheOption.None)
     
                Dim thumb As New TransformedBitmap(image.Frames(0), New ScaleTransform(1, 1))
     
                Dim stream As New IO.FileStream(path & i & ".wdp", IO.FileMode.Create)
     
                Dim wdp_image As New WmpBitmapEncoder
                wdp_image.Frames.Add(BitmapFrame.Create(image.Frames(0), thumb, Nothing, Nothing))
     
                wdp_image.Save(stream)
     
                stream.Close()
                stream.Dispose()
            Next
     
            'Step 2, add image to a Listview
            For Each s As String In System.IO.Directory.GetFiles(path, "*.wdp")
                Dim image As BitmapDecoder = BitmapDecoder.Create(New Uri(s), BitmapCreateOptions.None, BitmapCacheOption.None)
                If image.Frames(0).Thumbnail IsNot Nothing Then
                    Dim imm As New Image
                    imm.Source = image.Frames(0).Thumbnail
                    listView1.Items.Add(imm)
                End If
            Next
        End Sub
    L'image utilisée pour le test (à mettre dans c:\test\ )
    http://processpc.info/images/test.jpg (100 x 100 pixels)

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Citation Envoyé par archimed111 Voir le message
    Le problème ne se produit pas quand je ne met pas de miniature intégrée.
    Je dirais donc que ton code pour ajouter une miniature intégrée est défectueux ou incomplet: peut-être faut-il modifier les métadonnées de l'image pour que l'image ne soit pas corrompue ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 21
    Par défaut
    Lorsque j'adapte le code pour faire une série de jpeg (et plus de wdp) en utilisant le même code (et en utilisant les miniatures) je n'ai aucun problème !

    Pour les metadata j'ai essayé d'en ajouter, que j'en ajoute ou pas j'ai le même soucis.

    J'ai testé avec le format TIFF j'ai le même problème.

    J'ai testé plusieurs tailles différentes pour la miniature, j'ai même essayé de changer son format de pixels j'obtiens toujours le même problème.

    J'ai ensuite fait quelques tests avec photoshop :

    Je crée un fichier wdp sous photoshop , qui après vérification contient bien une miniature intégrée.
    Je créé alors de multiples copies, que je met dans le listview pas de problème ça marche !

    Ensuite pour chaque fichiers je ne modifie aucun pixels, j'efface juste les metadata en conservant la miniature intégrée (je garde celle d'origine).
    -> ca ne fonctionne pas.

    Autre test , je conserve les metadata mais je modifie la miniature intégrée
    -> Ca ne marche pas

    Dernier test, je conserve la miniature d'origine et les metadata et je ne ré encode pas l'image.
    Il y a juste la "structure" du fichier utilisé qui sera celle de WPF. Les fichiers sont différents uniquement de quelques octets, mais d'un point de vue pixels , metadata et miniature ils sont identiques
    -> Ca ne marche pas non plus !


    J'avoue que la je suis un peu perdu !

    Quelques autres précisions. Même si ça ne fonctionne pas dans wpf dans windows vista aucun problème lorsque je parcours ces fichiers je n'ai pas d'erreur.

    Avec photoshop (et son plugin hdphoto) les images compressées en wdp depuis wpf ne sont pas lisibles.

    Mais si je crée une image WDP depuis photoshop, et que l'on conserve les 'pixels' sans réencoder (et que l'on modifie ou non sa miniature ou ces metadata) photoshop arrive a les ouvrir.



    Merci pour votre aide

Discussions similaires

  1. [Débutant] Impossible récupérer Fichier Photo avec un FileUpload!
    Par mumu27 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 12/06/2013, 17h41
  2. Probleme de lecture avec lecteur intégré
    Par jerem432 dans le forum Langage
    Réponses: 2
    Dernier message: 24/12/2012, 00h33
  3. Création fichier access avec calendrier intégré
    Par mimi62 dans le forum Modélisation
    Réponses: 4
    Dernier message: 13/07/2010, 21h19
  4. Réponses: 2
    Dernier message: 27/01/2010, 16h47
  5. Réponses: 8
    Dernier message: 10/12/2007, 13h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo