我可以將單頁TIFF轉換爲.Net中的PNG,但是,如何爲多頁TIFF執行此操作?將多頁TIFF轉換爲PNG .Net
6
A
回答
6
你應該選擇在一個循環活動框架(頁面),每個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圖像。
1
Imagemagick可以對圖像做任何事情,但由於可供選擇的選項太多,可能需要一段時間才能完成。您可以使用interop直接使用Imagemagick,也可以使用.NET包裝器。我只用interop,所以我不知道wrapper有多好或不好。
private readonly ImageMagickObject.MagickImageClass _imageMagick = new ImageMagickObject.MagickImageClass();
var parameters = new object[] {sourcePath, destPath};
_imageMagick.Convert(ref parameters);
您必須在ImageMagick網站上找到自己的參數。查看命令行參數的幫助,並搜索論壇中的多頁TIFF。我假設你想把tiff分成多個pngs?那麼,也許是這樣的:
轉換multipage.tif單%d.png
1
無需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
6
感謝@湯姆哈勒戴
我會提供你的代碼的C#版本
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. 轉換許多PNG對多頁TIFF
- 2. 在.Net中將TIFF文件轉換爲PNG
- 3. 將多頁PDF轉換爲多頁TIFF的工具
- 4. 將TIFF轉換爲PostScript
- 5. 在C中將雙色調TIFF轉換爲雙色調PNG
- 6. 將第3組壓縮的TIFF轉換爲png或pdf中的.net
- 7. 將Tiff文件轉換爲每像素8位的png格式.net
- 8. 將JPEG-In-Tiff轉換爲普通TIff
- 9. 在tiff中將tiff轉換爲gif
- 10. 在.NET 2.0中將位圖轉換爲一個多頁TIFF圖像
- 11. 將TIFF LZW轉換爲CCITT
- 12. 將TIFF轉換爲1bit
- 13. 如何使用Ghostscript將psd(photoshop文件)或tiff轉換爲PNG?
- 14. 如何將圖像(GIF,JPG,JPEG,PNG)轉換爲PHP中的TIFF?
- 15. 我可以使用iTextpdf lib將TIFF轉換爲PNG嗎?
- 16. 回形針 - 將tiff圖像轉換爲jpg或png
- 17. 如何多頁PDF轉換爲多頁TIFF
- 18. 在.net1.1中將多頁Tiff轉換爲jpeg
- 19. 使用轉換或mogrify將多個PNG文件合併爲一個多頁TIFF文件
- 20. 將多頁PDF轉換爲PNG並返回(Linux)
- 21. 將SWF轉換爲PNG
- 22. 將PNG轉換爲JPEG
- 23. 需要.NET庫將TIFF文件轉換爲PDF
- 24. 將Word文檔轉換爲tiff
- 25. 將PDF轉換爲TIFF格式
- 26. 將tiff文件從php轉換爲jpg
- 27. 如何將InDesign IDML轉換爲Tiff?
- 28. 使用PDFClown將tiff轉換爲PDF
- 29. 將UIImage轉換爲tiff/tif文件
- 30. VB dLL將pdf轉換爲tiff