Dot-Net
將多頁 TIFF 轉換為 PNG .Net
我可以在 .Net 中將單頁 TIFF 轉換為 PNG,但是,我將如何為多頁 TIFF 執行此操作?
您應該在循環中選擇活動框架(頁面)並將每個 tiff 頁面轉換為 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 }此程式碼假定您可以在 System.Drawing.Bitmap 對像中載入 Tiff 圖像。
謝謝@Tom Halladay
我將提供您的程式碼的 ac# 版本
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); } }