将多页Tiffs分隔成单独的页面
本文关键字:单独 分隔 Tiffs | 更新日期: 2023-09-27 18:21:09
当前我正在使用.NET将多页tiff分解为单独的jpeg/png。这个过程本身就很好。但几周后,我注意到页面大小有一个很大的缺陷。我分离的每一页都与整个TIFF文档的组合相同(宽度/高度非文件大小)。显示TIFF时,会在图像的右侧/底部创建一个巨大的黑点。这是一个很大的缺陷,因为我无法确定每个页面的物理尺寸,因为我正在分离它们。如果我提前知道,我至少可以写一些裁剪机制。如有任何建议,不胜感激。
System.IO.Stream s =
new System.IO.MemoryStream(imageData);
System.Drawing.Image i =
System.Drawing.Image.FromStream(s);
int NumberOfFrames = i.GetFrameCount(System.Drawing.Imaging.FrameDimension.Page);
List<byte[]> imageCollection = new List<byte[]>();
for (int f = 0; f < NumberOfFrames; f++)
{
i.SelectActiveFrame(System.Drawing.Imaging.FrameDimension.Page, f);
Bitmap b = new Bitmap(i.Width, i.Height);
Graphics g = Graphics.FromImage(b);
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Default;
g.DrawImageUnscaled(i, 0, 0);
g.Dispose();
imageCollection.Add((byte[])System.ComponentModel.TypeDescriptor.GetConverter(b).ConvertTo(b, typeof(byte[])));
}
return imageCollection;
我不确定问题描述,但听起来你要拆分的页面中有alpha通道数据。听起来你没有正确处理,所以生成的位图在应该透明的地方显示默认的黑色。
如果是这样的话,那么:
1) 修复提取器以正确处理alpha通道
2) 编写一个方法,找到最小的边界框,使框中的alpha数量最小化,然后将图像裁剪到该框中。