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"));