GraphicsMagick++ рисует текст и автоматически изменяет размер холста

Я планирую сгенерировать изображение с помощью Magick (GraphicsMagick++), содержащее некоторый текст, и я хочу, чтобы размер холста изображения автоматически изменялся на основе отрисованного текста.

Это мой код:

    bool LoadText(const std::string& text, const std::string& fontface, int pointsize, Magick::Color color) {

    image = Magick::Image( Magick::Geometry(1,1), Magick::Color("black"));
    image.font(fontface);
    image.fillColor(color);
    image.strokeColor(color);
    image.fontPointsize(pointsize);
    image.read("CAPTION:" + text);
    //image.annotate(text,CenterGravity);
    return true;
}

С помощью "annotate()" размер холста не изменяется, но цвет текста и фона являются правильными.

Если я использую протокол "CAPTION:", размер холста изменяется, но цвет шрифта и цвет фона не учитываются.

Что я делаю неправильно?

1 ответ

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

using namespace Magick;

bool LoadTextCaption(const std::string& text,
                     const std::string& fontface,
                     int pointsize,
                     Magick::Color color)
{
    Image image;                           // Allocated but not initialized.
    image.font(fontface);
    image.fillColor(color);
    image.strokeColor(color);
    image.fontPointsize(pointsize);
    image.backgroundColor(Color("BLACK")); // <- Set background
    image.read("CAPTION:" + text);
    return true;
}
// ... 
LoadTextCaption("Hello Caption!", "TimesNewRoman", 32, Color("RED"));

Привет Подпись

Другие вопросы по тегам