目前我正在使用.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;
答案 0 :(得分:0)
我不确定问题描述,但听起来你正在拆分的页面中包含alpha通道数据。听起来你没有正确处理,所以结果位图显示默认的黑色,它应该是透明的。
如果是这样的话,那么:
1)修正提取器以正确处理alpha通道
2)编写一个方法,找到最小化框中alpha值的最小边界框,然后将图像裁剪到该框中。