Преобразование PDF к изображениям с помощью ImageMagick.NET - как установить DPI

  1. GCC не реализует rd.entropy () правильно - он всегда возвращает 0 (по крайней мере, в Mac OS X).
  2. К сожалению, похоже, что нет никакой возможности смешать дополнительную энтропию в random_device, что важно, потому что обычно / часто (посмотрите на Linux / dev / random и / dev / urandom, а также на реализацию Intel RDRAND) реализует генератор псевдослучайных чисел под капотом. Я бы хотел улучшить свой результат, введя что-то, что я считаю случайным, чтобы смешиваться с тем, что производит его источник энтропии. Опять же, поскольку это устройство (или модуль ядра) внутренне реализует криптографический алгоритм для обработки битов энтропии, которые он получает для генерации своего вывода, я хотел бы иметь возможность «рандомизировать» этот процесс больше путем инъекции мои собственные данные должны смешиваться с любой энтропией, которую выбирает устройство. Например, рассмотрим Java SecureRandom (). Это не позволяет вам устанавливать семя (которое действительно преобразует его в PRNG), но оно будет радостно смешивать то, что вы предоставляете, тем, что оно использует, чтобы «рандомизировать» свой результат еще больше.
  3. Я лично предпочитают RDRAND. Небольшая сборная библиотека с компактным интерфейсом C. Вот ссылки: Дэвид Джонсон из Intel объясняет RDRAND на Stackoverflow Указатели Stackoverflow для источника библиотеки RDRAND для Windows, Linux и Mac OS X Блог Intel в библиотеке RDRAND , и ссылку для скачивания
7
задан Avi Pinto 26 May 2010 в 20:33
поделиться

2 ответа

Я вкратце рассмотрел это.

Свойство Image.Resolution можно использовать для установки разрешения рендеринга PDF, но это свойство не предоставляется оболочкой ImageMagick.NET.

Добавить отсутствующее свойство в класс Image достаточно просто.

Index: ImageMagickNET/Image.h
===================================================================
--- ImageMagickNET/Image.h  (revision 59374)
+++ ImageMagickNET/Image.h  (working copy)
@@ -532,6 +532,13 @@
        }


+       // Vertical and horizontal resolution in pixels of the image.
+       property Geometry^  Density
+       {
+           void set(Geometry^);
+       }
+
+
        //----------------------------------------------------------------
        // IO
        //----------------------------------------------------------------
Index: ImageMagickNET/Image.cpp
===================================================================
--- ImageMagickNET/Image.cpp    (revision 59374)
+++ ImageMagickNET/Image.cpp    (working copy)
@@ -1099,5 +1099,9 @@
        return bitmap;
    }

+   void Image::Density::set(Geometry^ density_)
+   {
+       image->density(*(density_->geometry));
+   }
 }

К сожалению, кажется, что ошибка не позволяет нам установить качество рендеринга во время итерации по страницам PDF, как вы пытаетесь это сделать.

Другой вариант - открывать каждую страницу отдельно:

Image image = new Image();
image.Density = new Geometry("1000");  // 1000 dpi
image.Read(@"C:\u\test.pdf[2]");       // Open the 3rd page, index 0 is the first

Если номер страницы выходит за пределы допустимого диапазона, вы получаете исключение raw C ++. Хотя вы можете поймать это в C # , оболочка, вероятно, должна включать класс исключений .NET для представления ошибок ImageMagick.

1
ответ дан 7 December 2019 в 18:40
поделиться

Обновляя ссылку, я основал обертку.NET на официальном веб-сайте ImageMagick.

Источник: https://github.com/dlemstra/Magick. СЕТЬ

0
ответ дан 7 December 2019 в 18:40
поделиться