magick++ 简介

magick++ 简介:

 

最近工作的杂记:

 

1 文字:

 

   1.1 设置字库环境配置

         export MAGICK_CONFIGURE_PATH= 某个用于搜索配置文件的下面

         将相关的config文件放置到目录下面, config文件中,可以配置相关的字库文件。

         http://sourceforge.net/projects/gs-fonts/files/gs-fonts/8.11 (base 35%2C GPL)/ghostscript-fonts-std-8.11.tar.gz/download

         下载完解压到相应的目录。

          试一下最简单的合成

 

	string sText = argv[1];
	string sImgPath = argv[2];
	
	char * psImg = NULL;
	int iImgBufferLen = 0;
	int ret = LoadFile2Mem( sImgPath.c_str(), &psImg, &iImgBufferLen );

	assert( 0 == ret );
	
	printf("load img %s len %d\n", sImgPath.c_str(), iImgBufferLen );
	Magick::Blob blob( psImg, iImgBufferLen );
	Magick::Geometry geo(10,10);
	Magick::Image img;
	img.read( blob );

	Magick::NorthWestGravity style;

	img.annotate(sText, geo, Magick::NorthWestGravity);

	img.write( "text.jpg" );

	free( psImg ), psImg = NULL;

    是可行的。

 

    1.2. 设置字体样式,大小,颜色

 

    字体要兼容 中文,有个比较爽的招,直接在windows下把喜欢的字体copy到你想放的目录,在程序里面指明即可。

    如微软雅黑。C:\WINDOWS \Fonts\msyh.ttf 

    程序指定 字体如下:

 

                           outImg.label("annote");
    234                 outImg.font( sFontPath.c_str() );
    235                 outImg.strokeColor( Magick::Color() );
    236                 outImg.fontPointsize( 15 );  //字体大小
    237                 //outImg.fillColor( "light blue" );  //简单的颜色可以这样指定
    238                 outImg.fillColor( "#052B61" ); // 用rgb 换算, 比如用color(128,128,128) 死活不行,蛋疼
    239                 outImg.annotate( sText.c_str(), "0,+5", Magick::NorthWestGravity );
    240 
 

     这样基本可以实现字体样式,大小,颜色。

 

 

 

linux下采用开源库Magick++实现图片合成,图片添加中英文字体:需要自己下载编译Magick++,如下为部分代码,下载可看完整代码 #include #include #include #include #include #define MAGICKCORE_QUANTUM_DEPTH 16 #define MAGICKCORE_HDRI_ENABLE 1 //#define _GLIBCXX_USE_CXX11_ABI 0L #define BI_RGB 0L using namespace std; using namespace Magick; bool bCHMixBack(char *JiGuan, char *DateBegain,char *DateEnd,char *BackGroundpic,char *toPic); bool bCHMixBack(char *JiGuan, char *DateBegain,char *DateEnd,char *BackGroundpic,char *toPic) { std::vector draws; Magick::Image img; img.read( BackGroundpic ); printf(BackGroundpic); printf("\nBackGroundpic end\n"); //draws.push_back(Magick::DrawableFont("黑体",(Magick::StyleType)AnyStyle,600,(Magick::StretchType)AnyStretch)); //设置字体 宋体 黑体 微软雅黑// /* Magick::DrawableFont Font = Magick::DrawableFont("黑体",(Magick::StyleType)NormalStyle,400,(Magick::StretchType)AnyStretch);//"/usr/share/fonts/simhei.ttf" draws.push_back(Font); draws.push_back(Magick::DrawablePointSize(22)); //设置字体大小 draws.push_back(Magick::DrawableFillColor(Magick::Color("black")));//字体颜色 char szDate[255]={0}; sprintf(szDate,"%s-%s",DateBegain,DateEnd); draws.push_back(Magick::DrawableText(200,276,"33")); //draws.push_back(Magick::DrawableText(200,276,szDate)); //draws.push_back(Magick::DrawableText(200,240,JiGuan)); printf("\n"); printf(szDate); printf("\n"); printf(JiGuan); printf("\n++++bCHMixBack img.draw(draws)\n"); img.draw(draws); */ string family_ = "黑体"; img.fontFamily(family_); img.fontPointsize(22); img.fontWeight(600); img.fillColor(Magick::Color("black")); img.fontStyle((Magick::StyleType)NormalStyle); Magick::DrawableText text(200,276,"字体颜色"); img.draw(text); printf("\n++++bCHMixBackimg.draw(draws) End\n"); int len = strlen(toPic); if(toPic[len-5]=='.') { len -=4; } else if(toPic[len-4]=='.')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值