net magickreadsettings magick examples c# pdf foreach magick.net

c# - magickreadsettings - ImageMagick.NET: un rendimiento más rápido



magick net examples (1)

Puede mejorar el rendimiento leyendo el archivo página por página. Si lee todo el archivo, habrá 703 páginas en la memoria. Es probable que su máquina no pueda asignar tanta memoria e ImageMagick luego usará el disco para almacenar los píxeles y eso reducirá el rendimiento.

Puede especificar la página que desea leer con la propiedad FrameIndex de la clase MagickReadSettings. Si especifica una página que es demasiado alta, se generará una excepción (requiere Magick.NET 7.0.0.0005 o superior) con un mensaje que indique que está solicitando una página no válida. Debe hacer esto porque ImageMagick no conoce el recuento de páginas de un archivo PDF. A continuación hay un ejemplo de cómo puedes hacer esto.

int page = 0; while (true) { MagickReadSettings settings = new MagickReadSettings() { FrameIndex = page }; try { using (MagickImage image = new MagickImage(@"C:/YourFile.pdf", settings)) { // Do something with the image.... } } catch (MagickException ex) { if (ex.Message.Contains("Requested FirstPage is greater")) break; else throw; } page++; }

Estoy usando la biblioteca de ImageMagick.NET para C # y quiero obtener información de cada página en un documento .PDF. Aquí está mi código actual:

var list = new MagickImageCollection(); list.Read(file.FullName); foreach (var page in list) { if (!backgroundWorker.CancellationPending) { pageCount.pageColorspace(page); isFormat(page.Width, page.Height); pageCount.incPdfPages(); } }

Pero en mi opinión, el rendimiento es muy lento. Toma 4 minutos para 10 archivos PDF con 703 páginas. ¿Es la forma de hacerlo más rápido?