Применение цвета для преобразования PDF в ImageMagick.NET - PullRequest
0 голосов
/ 01 ноября 2018

В продолжение предыдущего поста SO здесь Я перешел от возможности убрать прозрачность из преобразования PDF к невозможности настроить цвет фона преобразования. Я перепробовал все, что смог найти на ImageMagick.NET github docs . Мне нужно убедиться, что ЛЮБОЕ изображение, которое передается через этот программный пакет, имеет непрозрачный белый фон.

    /// <summary>
    /// Write image data from a pdf file to a bitmap file
    /// </summary>
    /// <param name="imgData"></param>
    private static void convertPdfToBmp(ImageData imgData)
    {
        MagickReadSettings settings = new MagickReadSettings();
        // Settings the density to 600 dpi will create an image with a better quality
        settings.Density = new Density(600);

        using (MagickImageCollection images = new MagickImageCollection())
        {
            // Add all the pages of the pdf file to the collection
            images.Read(imgData.pdfFilePath, settings);

            // Create new image that appends all the pages horizontally
            using (IMagickImage image = images.AppendVertically())
            {
                // Remove the transparency layers and color the background white
                image.Alpha(AlphaOption.Remove);

                int aval = image.Settings.BackgroundColor.A = 0;
                int rval = image.Settings.BackgroundColor.R = 0;
                int bval = image.Settings.BackgroundColor.G = 0;
                int gval = image.Settings.BackgroundColor.B = 0;

                // Convert the image to a bitmap
                image.Format = MagickFormat.Bmp;

                // Delete any old file 
                if (File.Exists(imgData.bmpFilePath))
                {
                    File.Delete(imgData.bmpFilePath);
                }
                // Save result as a bmp
                image.Write(imgData.bmpFilePath);
            }
        }
    }

В приведенном выше коде, если я установлю какой-либо из 4 каналов image.Settings.BackgroundColor на другой цвет, это не повлияет на изображение. Если я использую image.BackgroundColor, это никак не повлияет на изображение. Чего мне не хватает?

Примечание: в приведенном выше коде я устанавливаю цвета на черный, чтобы убедиться, что код работает. Я пробовал и другие цвета для хихиканья.

1 Ответ

0 голосов
/ 14 июня 2019

Измените ваши настройки с:

settings.Density = new Density(600);

до

settings.Density = new Density(600);
settings.ColorType = ColorType.TrueColor;
settings.BackgroundColor = new MagickColor(Color.White);

Я уже пробовал это и отлично работает.

...