2010-03-18 3 views
1

J'essaie d'ouvrir les fichiers .tif qui contiennent de la couleur (300 dpi, PixelFormat.Format24bppRgb) en utilisant les classes .Net Image et Bitmap. Je reçois toujours une erreur "paramètre invalide" lorsque les tiffs ont de la couleur (fonctionne bien pour les tiffs en noir et blanc). Si quelqu'un a le code source sur la façon d'ouvrir un fichier .tif avec de la couleur, je l'apprécierais profondément. Voici ce que je tente de faire. cela ne fonctionne pas lorsque vous appelez Bitmap.FromStream:
Impossible d'ouvrir un fichier .tif avec la couleur à l'aide des classes .Net Image ou Bitmap

using (FileStream fs = File.OpenRead(fileName)) 
{ 
    using (Image img = Image.FromStream(fs)) {} 
} 
+0

Le code que vous avez posté fonctionne très bien pour moi en chargeant un TIFF couleur de 300 DPI, 24BPP. Avez-vous des informations supplémentaires sur les images en couleur? – Tarsier

+3

TIFF est un acronyme pour des milliers de formats de fichiers incompatibles –

Répondre

0

La raison pour laquelle vous ne pouvez pas ouvrir le fichier d'image est que l'image a peut-être le format de compression. Je rencontre également ce problème lorsque j'ouvre un fichier image .gif. Je cherche les solutions. Nous pouvons communiquer entre nous. [email protected] merci

0

Je pense que le problème de base est que l'on ne peut pas utiliser les classes .Net Image/Bitmap pour ouvrir de manière fiable les TIFF couleur. Un grand nombre des différents formats de compression utilisés pour coder les fichiers TIFF couleur cassent la classe .Net Image/Bitmap. Il semble être un piège 22 - vous devez connaître les informations de formatage TIFF pour savoir comment le charger, mais dans .Net il faut charger la classe Image/Bitmap pour lire les informations de formatage TIFF.

Je pense que la réponse à ma question est, "ceci ne peut pas être fait simplement en utilisant le framework .Net," et que je devrai acheter un contrôle tiers ou créer moi-même quelque chose en C++.

0

J'ai trouvé que le GDI (+) était le facteur limitant dans le traitement de TIFF. J'ai eu beaucoup de problèmes de "paramètres invalides" sur XP (dans mon cas à cause de l'utilisation de 16bpp en niveaux de gris et de tiff en mosaïque). Le même code a fonctionné parfaitement sur Windows7/64bit.

Pour moi, le LibTIFF.NET libre était la solution. (StackOverflow using LibTIFF from c#) Seulement con comparé à GDI +: vous devrez rouler votre propre BMP (tableau byte non compressé en conversion bmp). Je peux vous fournir des exemples si vous le souhaitez.

Pour diagnostiquer votre type de fichier TIFF, vous pouvez utiliser TiffDump download link En utilisant comme tiffdump myfile.tif produira une sortie comme:

Magic: 0x4949 <little-endian> Version: 0x2a 
Directory 0: offset 1669857288 (0x63880008) next 0 (0) 
ImageWidth (256) SHORT (3) 1<33227> 
ImageLength (257) SHORT (3) 1<24986> 
BitsPerSample (258) SHORT (3) 1<16> 
Compression (259) SHORT (3) 1<1> 
Photometric (262) SHORT (3) 1<1> 
FillOrder (266) SHORT (3) 1<1> 
SamplesPerPixel (277) SHORT (3) 1<1> 
XResolution (282) RATIONAL (5) 1<6400> 
YResolution (283) RATIONAL (5) 1<6400> 
PlanarConfig (284) SHORT (3) 1<1> 
ResolutionUnit (296) SHORT (3) 1<2> 
TileWidth (322) SHORT (3) 1<256> 
TileLength (323) SHORT (3) 1<256> 

informations telles Très probablement pouvez-vous obtenir des réponses plus spécifques sur StackOverflow.

Questions connexes