Magick++ 6.8.5在MFC中的使用

http://blog.csdn.net/akof1314/article/details/8924915

 

Magick++是ImageMagick图像库的C++封装。ImageMagick是一个集创建、编辑、合成和转换图像格式的软件套件。
编译步骤:
1.从http://www.imagemagick.org/download/windows/ImageMagick-windows.zip下载源代码包;
2.解压到文件夹,打开"..\VisualMagick\configure"目录下的configure.exe文件,按"下一步"进入配置界面,可以进行设置编译类型和编译选项,在这里我使用默认的编译类型,即Dynamic Multi-threaded DLL runtimes类型,编译选项选择默认选项,如下图所示:

3.继续点击"下一步",直到"完成",就可以看到在"..\VisualMagick"目录自动生成了"VisualDynamicMT.sln"文件(此名称会根据不同的编译类型而不同),用VS2008进行打开,右键解决方案里的"All"工程,选择"Clean",然后再选择"Build"。编译完成之后,就可以在"..\VisualMagick"下的"bin"文件夹和"lib"文件夹看到所生成的文件。
4.打开"\VisualMagick\bin"目录下的"IMDisplay.exe",载入任意一张图片(不支持中文路径),看是否可以正常显示,如下图所示:

下面介绍在VS2008中使用Magick++
1.新建win32控制台项目,选择"Empty project",去除"Precompiled header",工程名为TestMagick;
2.添加新建一个cpp文件,名称为test.cpp,代码如下:

 

1
2
3
4
5
6
7
8
9
10
11
#include <Magick++.h>
using  namespace Magick;

int main( int  /*argc*/char ** argv)
{
    InitializeMagick(*argv);
    Image image( "100x100""white"); 
    image.pixelColor( 4949"red"); 
    image.write( "red_pixel.png");
     return  0;
}

 

代码的功能是创建一张100x100像素的白色背景图片,中心像素为红色。
3.右键工程→"Properties"→"C/C++"下,"General"→"Additional Include Directories"填入"X:\ImageMagick-6.8.5";"X:\ImageMagick-6.8.5\Magick++\lib","Preprocessor"→"Preprocessor Definitions"增加填入";_VISUALC_;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS"。"Linker"下,"General"→"Additional Library Directories"填入"X:\ImageMagick-6.8.5\VisualMagick\lib","Input"→"Additional Dependencies"填入"CORE_DB_Magick++_.lib"。"Debugging"→"Working Directory"填入"X:\ImageMagick-6.8.5\VisualMagick\bin"。
4.编译运行,即可在"..\VisualMagick\bin"目录下看到生成的red_pixel.png文件。

下面介绍在MFC中使用Magick++

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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、付费专栏及课程。

余额充值