【问题标题】:GraphicsMagick++ draw text and auto-resize canvasGraphicsMagick c++ 绘制文本和自动调整画布大小
【发布时间】:2017-10-19 07:47:02
【问题描述】:

我打算用 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:”协议,画布会调整大小,但不考虑字体颜色和背景颜色。

我做错了什么?

【问题讨论】:

    标签: graphicsmagick magick++


    【解决方案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"));
    

    【讨论】:

    • 谢谢,我会试试的。但我对你的样品有一个问题。为什么文本以 2 行绘制。我想要一行文字。
    • 我收到以下运行时错误:在抛出 'Magick::ErrorOption' what() 的实例后调用终止:Magick:必须指定 coders/caption.c 报告的图像大小(Hello Caption!) :110(ReadCAPTIONImage)Magick:由于信号 6(SIGABRT)“中止”而中止...
    猜你喜欢
    • 2014-07-29
    • 2011-08-31
    • 2012-08-02
    • 2014-05-15
    • 1970-01-01
    • 2021-04-28
    • 2015-10-06
    • 2020-12-23
    • 1970-01-01
    相关资源
    最近更新 更多