Comment puis-je convertir un tableau de bitmaps en une toute nouvelle image au format TIFF, en ajoutant tous les bitmaps en tant que trames dans cette nouvelle image tiff?
en utilisant .NET 2.0.
Comment puis-je convertir un tableau de bitmaps en une toute nouvelle image au format TIFF, en ajoutant tous les bitmaps en tant que trames dans cette nouvelle image tiff?
en utilisant .NET 2.0.
Commencez avec la première image bitmap en la plaçant dans un objet Image
Bitmap bitmap = (Bitmap)Image.FromFile(file);
Enregistrer l'image dans la mémoire comme tiff
MemoryStream byteStream = new MemoryStream();
bitmap.Save(byteStream, ImageFormat.Tiff);
Mettre Tiff en une autre Image de l'objet
Image tiff = Image.FromStream(byteStream)
Préparer des encodeurs:
ImageCodecInfo encoderInfo = GetEncoderInfo("image/tiff");
EncoderParameters encoderParams = new EncoderParameters(2);
EncoderParameter parameter = new EncoderParameter(
Encoder.Compression, (long)EncoderValue.CompressionCCITT4);
encoderParams.Param[0] = parameter;
parameter = new EncoderParameter(Encoder.SaveFlag,
(long)EncoderValue.MultiFrame);
encoderParams.Param[1] = parameter;
Enregistrer le fichier:
tiff.Save(sOutFilePath, encoderInfo, encoderParams);
Pour les pages suivantes, préparer des encodeurs:
EncoderParameters EncoderParams = new EncoderParameters(2);
EncoderParameter SaveEncodeParam = new EncoderParameter(
Encoder.SaveFlag,
(long)EncoderValue.FrameDimensionPage);
EncoderParameter CompressionEncodeParam = new EncoderParameter(
Encoder.Compression, (long)EncoderValue.CompressionCCITT4);
EncoderParams.Param[0] = CompressionEncodeParam;
EncoderParams.Param[1] = SaveEncodeParam;
tiff.SaveAdd(/* next image as tiff - do the same as above with memory */, EncoderParams);
Enfin vider le fichier:
EncoderParameter SaveEncodeParam = new EncoderParameter(
Encoder.SaveFlag, (long)EncoderValue.Flush);
EncoderParams = new EncoderParameters(1);
EncoderParams.Param[0] = SaveEncodeParam;
tiff.SaveAdd(EncoderParams);
Qui devrait vous obtenir a commencé.
Tombé sur ce post après un peu de recherche sur Google. J'ai essayé le code qui était dans le post de a'b'c'd e f'g h', mais cela ne fonctionne pas pour moi. Peut-être, je n'en faisais pas quelque chose correctement.
En tout cas, j'ai trouvé un autre post que les images enregistrées à multi-page tiff. Voici le lien vers le post: http://www.bobpowell.net/addframes.htm
Aussi, voici le code qui a fonctionné pour moi. Il doit être identique à celui de la poste.
Encoder encoder = Encoder.SaveFlag;
ImageCodecInfo encoderInfo = ImageCodecInfo.GetImageEncoders().First(i => i.MimeType == "image/tiff";
EncoderParameters encoderParameters = new EncoderParameters(1);
encoderParameters.Param[0] = new EncoderParameter(encoder, (long)EncoderValue.MultiFrame);
// Save the first frame of the multi page tiff
Bitmap firstImage = (Bitmap) _scannedPages[0].RawContent;
firstImage.Save(fileName, encoderInfo, encoderParameters);
encoderParameters.Param[0] = new EncoderParameter(encoder, (long)EncoderValue.FrameDimensionPage);
// Add the remining images to the tiff
for (int i = 1; i < _scannedPages.Count; i++)
{
Bitmap img = (Bitmap) _scannedPages[i].RawContent;
firstImage.SaveAdd(img, encoderParameters);
}
// Close out the file
encoderParameters.Param[0] = new EncoderParameter(encoder, (long)EncoderValue.Flush);
firstImage.SaveAdd(encoderParameters);
N'étant pas fan des antécédents de Microsoft en matière de gestion et de création de fichiers de formats standardisés, je suggère d'utiliser ImageMagick, disponible sous forme de bibliothèque .Net sous forme de MagickNet (attention, http://midimick.com/magicknet/ a actuellement un popup de spyware, j'ai alerté le propriétaire du site).
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.