Je suis capable de convertir une page TIFF en PNG en .Net, cependant, comment ferais-je cela pour un TIFF multipage?Convertir TIFF multipage en PNG .Net
Répondre
Vous devriez choisir un encadrement actif (page) dans une boucle et convertir chaque page tiff à un .png.
int pageCount = 1;
try
{
pageCount = bmp.GetFrameCount(FrameDimension.Page);
}
catch (Exception)
{
// sometimes GDI+ throws internal exceptions.
// just ignore them.
}
for (int page = 0; page < pageCount; page++)
{
bmp.SelectActiveFrame(FrameDimension.Page, page);
// save or otherwise process tiff page
}
Ce code suppose que vous pouvez charger l'image TIFF dans l'objet System.Drawing.Bitmap.
ImagemagickImagemagickImagemagick peut faire à peu près tout avec des images, mais il peut prendre un certain temps pour le faire correctement en raison de la quantité impressionnante d'options à choisir. Vous pouvez utiliser interop pour travailler directement avec Imagemagick ou vous pouvez utiliser un wrapper .NET. J'ai seulement utilisé interop donc je ne sais pas comment bon ou mauvais le wrapper est.
private readonly ImageMagickObject.MagickImageClass _imageMagick = new ImageMagickObject.MagickImageClass();
var parameters = new object[] {sourcePath, destPath};
_imageMagick.Convert(ref parameters);
Les paramètres que vous aurez à découvrir par vous-même sur le site Web ImageMagick. Regardez l'aide pour le paramètre de ligne de commande et recherchez le tiff multipage sur le forum. Je suppose que vous voulez diviser le tiff en plusieurs pngs? Alors peut-être quelque chose comme ceci:
converti simple% d.png
Exemple complet sans la nécessité d'assemblées de parti 3'rd:
' MAIN CODE '
Dim ImageBitmap = Bitmap.FromStream(ImageStream)
Dim FrameCount = ImageBitmap.GetFrameCount(FrameDimension.Page)
Dim RunningHeight As Integer = 0
Dim MaxWidth As Integer = 0
For MeasurementFrameIndex As Integer = 0 To FrameCount - 1
ImageBitmap.SelectActiveFrame(FrameDimension.Page, MeasurementFrameIndex)
RunningHeight += ImageBitmap.Height
MaxWidth = Math.Max(MaxWidth, ImageBitmap.Width)
Next
Dim CombinedBitmap As New Bitmap(MaxWidth, RunningHeight)
Dim RunningVerticalPosition As Integer = 0
For CombinationFrameIndex As Integer = 0 To FrameCount - 1
ImageBitmap.SelectActiveFrame(FrameDimension.Page, CombinationFrameIndex)
EmbedBitmap(ImageBitmap, CombinedBitmap, RunningVerticalPosition)
RunningVerticalPosition += ImageBitmap.Height + 1
Next
' SUPPORT ROUTINES '
Private Shared Sub EmbedBitmap(
SourceBitmap As Bitmap,
ByRef DestinationBitmap As Bitmap,
VerticalPosition As Integer)
Dim SourceRectangle As New Rectangle(
New Point(0, 0),
New Size(SourceBitmap.Width, SourceBitmap.Height))
Dim DestinationRectangle As New Rectangle(
New Point(0, VerticalPosition),
New Size(SourceBitmap.Width, SourceBitmap.Height))
Using Canvas As Graphics = Graphics.FromImage(DestinationBitmap)
Canvas.DrawImage(
SourceBitmap,
DestinationRectangle,
SourceRectangle,
GraphicsUnit.Pixel)
End Using
End Sub
merci Halladay @ Tom
Je vais fournir une version C# de votre code
private static Bitmap ConvertTiffToBitmapStream(byte[] tiffImage){
System.Drawing.Image ImageBitmap = Bitmap.FromStream(new MemoryStream(tiffImage));
int FrameCount = ImageBitmap.GetFrameCount(FrameDimension.Page);
int RunningHeight = 0;
int MaxWidth = 0;
for (int MeasurementFrameIndex = 0; MeasurementFrameIndex <= FrameCount - 1; MeasurementFrameIndex++){
ImageBitmap.SelectActiveFrame(FrameDimension.Page, MeasurementFrameIndex);
RunningHeight += ImageBitmap.Height;
MaxWidth = Math.Max(MaxWidth, ImageBitmap.Width);
}
Bitmap CombinedBitmap = new Bitmap(MaxWidth, RunningHeight);
int RunningVerticalPosition = 0;
for (int CombinationFrameIndex = 0; CombinationFrameIndex <= FrameCount - 1; CombinationFrameIndex++){
ImageBitmap.SelectActiveFrame(FrameDimension.Page, CombinationFrameIndex);
EmbedBitmap(new Bitmap(ImageBitmap), ref CombinedBitmap, RunningVerticalPosition);
RunningVerticalPosition += ImageBitmap.Height + 1;
}
return CombinedBitmap;
}
private static void EmbedBitmap(Bitmap SourceBitmap, ref Bitmap DestinationBitmap, int VerticalPosition){
Rectangle SourceRectangle = new Rectangle(new Point(0, 0), new Size(SourceBitmap.Width, SourceBitmap.Height));
Rectangle DestinationRectangle = new Rectangle(new Point(0, VerticalPosition), new Size(SourceBitmap.Width, SourceBitmap.Height));
using (Graphics Canvas = Graphics.FromImage(DestinationBitmap)){
Canvas.DrawImage(SourceBitmap, DestinationRectangle, SourceRectangle, GraphicsUnit.Pixel);
}
}
- 1. Modifier l'image TIFF multipage en utilisant System.Drawing
- 2. Impression multipage Tiff avec C#
- 3. convertir bitonal TIFF en biton PNG en C#
- 4. Conversion de fichiers TIFF en PNG en .Net
- 5. Division d'une image TIFF multipage - Avec .NET et IronPython
- 6. Ghostscript Multipage PDF vers PNG
- 7. Convertir TIFF en PostScript
- 8. Somme de contrôle pour le document tiff multipage
- 9. J'ai besoin d'afficher un TIFF multipage dans une application WPF
- 10. Comment convertir des images (GIF, JPG, JPEG, PNG) en TIFF en PHP?
- 11. VB dLL pour convertir pdf en tiff
- 12. Imagemagick convertir pdf en png
- 13. Convertir PDF en PNG en utilisant ImageMagick
- 14. Convertir SVG en PNG en Ruby
- 15. Coverting des images tiff d'une seule page à des images tiff multipages dans ruby
- 16. Convertir l'image JPEG/PNG au format d'image TIFF dans Android OS
- 17. Outil gratuit ou une bibliothèque pour convertir des fichiers Tiff en pdf en .Net
- 18. C# (ou VB6) Convertir Word doc en Tiff
- 19. Bonne bibliothèque Tiff pour .NET
- 20. Convertir .BMP en .PNG avec PHP
- 21. Convertir ma page aspx en image png
- 22. Comment afficher les images tiff, png dans ASP.NET
- 23. Convertir un TIFF multi-pages en jpeg dans .Net1.1
- 24. convertir des fichiers tiff en jpg de php
- 25. Une bonne bibliothèque pour convertir PDF en TIFF?
- 26. Bibliothèque pour l'écriture de fichiers XMP sur un fichier TIFF multipage
- 27. Convertir BMP en PNG en mémoire pour le collage du presse-papiers .Net
- 28. Bibliothèque pour convertir le latex en png en Java
- 29. Convertir bitmap en PNG ou JPG en utilisant Objective C
- 30. Convertir jpeg/png en une matrice de pixels en java