我的目标是从pdf中提取“聚类”图像。因此,如果两个或多个图像全部相互接触,或者在1-2个像素内,我希望它们被提取为具有透明背景的一个图像。理想情况下,Linux解决方案是最佳的。谢谢!
答案 0 :(得分:2)
从PDF页面中提取图像通常会以原始大小恢复它们。但是,在PDF页面中,它们可能已嵌入了应用的缩放或缩放因子。因此,每个图像在页面上的分辨率可能不同。
虽然它可能只是出现,好像图像彼此“接触”以填充另一个矩形(或任何形状),一旦它们被提取,它们可能不会“适合”在一起更多。此外,图像的一部分可能会覆盖其他部分,并且在提取之后,每个图像将再次以其完整大小可见。
答案 1 :(得分:1)
我认为Docotic.Pdf library可能是适合您案例的正确工具。
图书馆可以“绘画”提取图像,即保留缩放/旋转。对于每个绘制的图像,也会检索位置和大小。
因此,您可以使用该库来检索页面上绘制的图像,并分析每个图像的坐标以查找/分组图像集。
下面是一个示例代码,演示如何“绘制”图像及其坐标。
public static void extractImagesAndCoordinates(string file)
{
int imageIndex = 0;
using (PdfDocument pdf = new PdfDocument(file))
{
foreach (PdfPage page in pdf.Pages)
{
PdfCollection<PdfPaintedImage> paintedImages = page.GetPaintedImages();
foreach (PdfPaintedImage image in paintedImages)
{
Console.Out.WriteLine("Position {0}, {1}. Size {2}x{3}",
image.Position.X, image.Position.Y, image.Size.Width, image.Size.Height);
string outImagePath = string.Format("image{0}.png", imageIndex++);
image.SaveAsPainted(outImagePath, PdfExtractedImageFormat.Png);
}
}
}
}
免责声明:我为图书馆的供应商工作。