Создание мозаики из нескольких изображений увеличивает яркость конечного изображения - PullRequest
0 голосов
/ 24 марта 2019

Я пытаюсь создать коллаж из изображений с помощью Magick.net.Я использую MagickImageCollection и .Mosaic () .Я уже пробовал несколько функций, предоставляемых MagickImageCollection , но все они увеличивают яркость конечного изображения.До сих пор работал только .Montage () , но с .Montage () Я не правильно понимаю отступы.

Как мне это нужночтобы настроить его так, чтобы .Mosaic () сохранял цвета такими, как они есть в отдельных изображениях?

using (var collection = new MagickImageCollection())
{
    for (var i = 0; i < thumbnailCount; i++)
    {
        var image = new MagickImage(TempThumbPathFor(i));
        image.Resize(256, 0);

        var posX = (image.Page.Width + margin) * (i % 2);
        var posY = (image.Page.Height + margin) * (i / 2);
        image.Page = new MagickGeometry(posX, posY, new Percentage(100), new Percentage(100));

        collection.Add(image);
    }

    using (var result = collection.Mosaic())
    {
        result.Write(newPath);
    }
}

Коллаж изображений с размытыми цветами: Generated Image

Для получения дополнительной информации, почему проблема возникла в первую очередь, взгляните на эту проблему: GitHub

1 Ответ

0 голосов
/ 25 марта 2019

Разобрался, как создать монтаж с отступами и правильными цветами.Не удалось заставить его работать с .Mosaic , но с .Montage () .

. Важной частью является добавление полей к X, Y, Height иШирина и вызов .Trim () на окончательном изображении.Скорее всего, вам придется немного поиграться с полем, чтобы получить сбалансированный вид между изображениями, но в остальном он работает довольно хорошо.

const int margin = 2;
MagickGeometry geometry = null;
using (var collection = new MagickImageCollection())
{
    for (var i = 0; i < thumbnailCount; i++)
    {
        var image = new MagickImage(TempThumbPathFor(i));
        image.Resize(256, 0);
        collection.Add(image);

        if (i == 0)
        {
            geometry = image.BoundingBox;
            geometry.X += margin;
            geometry.Width += margin;
            geometry.Y += margin;
            geometry.Height += margin - 1;
        }
    }

    using (var result = collection.Montage(new MontageSettings()
    {
        Geometry = geometry,
        BackgroundColor = MagickColor.FromRgb(255, 255, 255)
    }))
    {
        result.Trim();
        result.Write(newPath);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...