2008-11-18 4 views
4

J'ai un grand nombre d'images TIFF que je devrais utiliser dans un programme WPF (.NET 3.5 SP1 spécifiquement et en utilisant C#). La moitié des fichiers TIFF contiennent des images couleur encodées en compression JPEG et ne fonctionnent pas avec WPF. L'application "Microsoft Office Document Imaging" gère correctement les fichiers. Comme Windows lui-même ne les aime pas vraiment (je ne peux pas produire de miniatures par exemple), je suppose qu'il s'agit d'une restriction dans les bibliothèques Windows Imaging Components (WIC) standard.WPF: images TIFF avec compression JPEG?

Est-ce que quelqu'un a des idées sur la façon de lire correctement les images TIFF qui utilisent la compression JPEG avec les bibliothèques standard .NET/WPF?

Ou est-ce que quelqu'un connaît d'autres codecs TIFF tiers pour WIC que je pourrais utiliser pour contourner ce problème?

Ou existe-t-il d'autres bibliothèques .NET pour les fichiers TIFF qui sont encore facilement utilisables avec WPF?

Merci!

Répondre

1

Les fichiers JPEG en format TIFF sont disponibles en deux versions - type 6 et type 7. Ce que vous décrivez sont les fichiers TIFF de type 6. Bien qu'Adobe ait recommandé depuis des années que ce type ne soit pas utilisé (voir Tech Note 2 pour plus de détails), plusieurs paquets graphiques l'utilisent encore.

Je connais quelques paquets graphiques commerciaux pour .NET qui peuvent les lire tels que les bibliothèques Captiva ISIS PixTools (anciennement Pixtran), mais ne connaissent rien d'open source ou autrement gratuit.

+0

En fait ce sont des fichiers de type 7 (ils sont créés par une application Win32 que nous avons écrite et j'ai vérifié la source). Microsoft Office Document Imaging les ouvre correctement, mais d'autres outils Microsoft ne peuvent pas les gérer (par exemple Paint ou Windows Picture and Fax Viewer.) –

1

Quelle API WPF utilisez-vous pour les gérer?

Avez-vous essayé d'utiliser TiffBitmapDecoder à partir de l'espace de noms System.Windows.Media.Imaging?

+0

J'ai essayé simplement d'utiliser un composant Image.J'ai essayé l'exemple de code de l'article MSDN suggéré et bien qu'il fonctionne pour d'autres fichiers, les images compressées JPEG génèrent toutes des exceptions 0x88982F40 lors de la tentative de décoder le fichier –

1

Vous devrez effectuer une mise à niveau vers Windows 7, Windows Server 2008 (ou plus récent) afin d'ouvrir ces fichiers en mode natif. Libye (C++) et LibTIFF.NET (.Net) devraient être capables d'ouvrir ces fichiers.

Assurez-vous que lors de la construction de l'une de ces bibliothèques, les TIFF_JPEG (6 et 7) sont activés dans la construction. Ces formats sont désactivés dans les paramètres de construction par défaut.

+0

Intéressant! Merci d'avoir fait un commentaire sur ce très vieux fil .J'ai quelques questions pour vous. TIFF_JPEG n'est pas activé dans les versions par défaut? 2) Toute compatibilité avec WPF ou WIC est-elle intégrée? –

+0

@Scott Bussinger: (1) il nécessite une version compatible de libjpeg pour construire. En outre, il ne peut pas garantir l'ouverture correcte du fichier tiff-jpeg de tous les fournisseurs en raison d'implémentations de fournisseurs non normalisées. Il faudra un ingénieur de maintenance pour surveiller et corriger les problèmes dans le code à mesure qu'ils sont découverts. (Si vous corrigez un bug, libtiff vous invite à soumettre votre correctif.) (2) WIC dépend de la version du système d'exploitation Windows. Windows 7 et versions ultérieures fournissent un support natif pour TIFF_JPEG. – rwong

Questions connexes