Получить атрибуты слоя из файлов xcf (GIMP) C# - PullRequest
1 голос
/ 09 января 2020

Я некоторое время находил C# код go, который помог мне получить отдельные детали слоя из файла XCF. В настоящее время я могу извлечь слои 'x', 'y', 'layer name' и 'layer x' и 'layer y' детали. Теперь я хочу цвет слоев, содержание и значение поворота (если повернуто) и, возможно, любые другие детали. Может кто-нибудь помочь?

Мой код:

    private void Form1_Load(object sender, EventArgs e)
    {
        string inputPdf  = image_path + "offical_tour.xcf"; // GIMP file to load
        string outputPng = image_path + "output.png";       // output filename


        using (MagickImageCollection images = new MagickImageCollection(inputPdf))
        {
            int i = 0;

            foreach (var image in images)
            {
                if (i > 0)
                {
                    string layerFile = Path.Combine(image_path, image.Label + $".png");

                    image.Write(layerFile); // save the individual layers

                    // show some layer attributes
                    Console.WriteLine(image.Page.X + " x " + image.Page.Y + " = Layer:'" + image.Label + "' -- " + image.Width + " -- " + image.Height);
                }

                if (i++ == 0 || image.Compose != CompositeOperator.Over) continue;
            }
        }
    }

1 Ответ

0 голосов
/ 09 января 2020

Информация, которую вы ищете, хранится в Gimp как «паразит» слоя, например:

(text "aaaa")
(font "Roboto Heavy")
(font-size 60)
(font-size-unit pixels)
(antialias yes)
(language "cad")
(base-direction ttb-rtl)
(color (color-rgb 0 0 0))
(justify center)
(box-mode dynamic)
(box-unit pixels)
(hinting yes)

Это объект, подобный JSON (но с синтаксисом LISP / Scheme) , Начиная с Gimp 2.10, элемент text может быть вместо элемента markup, если для определенных c частей текста задано специальное форматирование c:

(markup "<markup>plain<i>italic</i><b>bold</b></markup>")

Конечно, я не знать, как ваша библиотека получает эту информацию ...

...