PythonMagick是ImageMagick的python开发包。
下载:
PythonMagick-0.7.tar.gz
安装之前确认是否安装了下列库或包:
boost
boost-python
python 2.5
Magick++ (>= 6.2)
还要确认是否安装了下列工具:
pkg-config
libtool
make
然后执行下列命令进行安装:
$ tar -xzf PythonMagick-0.7.tar.gz
$ cd PythonMagick-0.7
$ ./configure
$ make
$ make install
make install的时候,必须具备root权限,看起来似乎很顺利,标准的安装过程,但是实际上一开始就出问题了
问题一: ./configure的时候找不到ImageMagick,实际上我是安装了的,关于ImageMagick的安装请参看我的博文:
[tips]ImageMagick软件包简介及安装,这个时候进入当前登录用户的home目录,打开.bash_profile文件,加入以下几行:
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
其中/usr/local/lib/pkgconfig为ImageMagick的包描述文件所在目录
保存并退出到命令行后,执行下列命令使之生效:
$ source .bash_profile
做完上述配置后,./configure是没有问题了。
问题二: make的时候会报 no matching function for call to 'registry_lookup(const volatile void (*)())' 的错误,这个问题比较麻烦,在google上找了很久,说是boost-python不再支持void*的原因,经过自己的一些尝试,才找到解决办法:
1 首先把下列提及文件中的void* or void * 全部替换为unsigned char* or unsigned char *,注意在替换的时候,要符合c++的语法:
PythonMagick-0.7/pythonmagick_src/_Blob.cpp _Image.cpp
/usr/local/include/Magick++/Blob.h Image.h
其中/usr/local/include/Magick++为ImageMagick安装后的头文件,可能会有所不同;
2 进入PythonMagick-0.7/pyste_src,找到Blob.pyste、Image.pyste,更改文件中的路径为正群的安装路径;
3 进入PythonMagick-0.7/helpers_src,找到Blob.cpp,打开,将其内容替换为:
cpp 代码
- #include "Blob.h"
-
- void update_wrapper(Magick::Blob& blob, const std::string& data) {
- blob.update((unsigned char*)(const_cast<char*>(data.c_str())),data.size());
- }
-
- std::string get_blob_data(const Magick::Blob& blob) {
- const unsigned char* data = static_cast<const unsigned char*>(blob.data());
- size_t length = blob.length();
- return std::string(data,data+length);
- }
做完以上设置后,按照安装步骤走,就搞定了,如果编译过程中出现问题,就再仔细检查1中所提到的文件中的void *指针是否替换完,因为有几个地方,void和*之间会有很多空格,要注意检查。
分享到:
- 2007-12-06 22:23
- 浏览 9003
- 评论(0)
- 论坛回复 / 浏览 (0 / 3502)
- 查看更多
相关推荐
"Android应用源码之Protips.zip"这个资源很可能包含了开发者在实际项目中总结的各种实用技巧和最佳实践,这些通常被称为Protips。下面,我们将深入探讨可能涵盖的一些关键知识点。 1. **性能优化**:Android应用的...
abap tips abap tips abap tips abap tips abap tips
本文将详细讲解如何使用基于jQuery的Tips插件,该插件允许提示框自动消失或由用户手动消失,从而为用户提供更加友好的交互体验。 首先,我们来了解jQuery Tips插件的基本概念。Tips插件主要用于在网页上显示临时...
* $(selector).tips({ //selector 为jquery选择器 * msg:'your messages!', //你的提示消息 必填 * side:1, //提示窗显示位置 1,2,3,4 分别代表 上右下左 默认为1(上) 可选 * color:'#FFF', //提示文字色 默认...
jQuery Tips提示插件是这个库的一个扩展,它增强了网页的用户体验,通过提供自适应屏幕宽度的提示信息,使用户能够更方便地理解和操作页面内容。 一、jQuery Tips提示插件介绍 jQuery Tips插件主要用于在网页上显示...
《KTH-TIPS纹理材质数据集详解》 纹理和材质是计算机图形学中不可或缺的元素,它们赋予虚拟世界中的物体以真实感和视觉吸引力。KTH-TIPS纹理材质数据集,作为一个广泛使用的资源库,为研究者和开发者提供了丰富的...
在编程领域,特别是GUI(图形用户界面)设计中,"Tips对话框"是一种常见的功能,它用于向用户提供简短的提示信息。这个例子是关于如何在应用程序中实现Tips对话框的教程,主要针对控件使用的类。让我们深入探讨一下...
本资源“jquery tips提示图片信息.rar”显然聚焦于利用jQuery实现一种图片提示信息的功能,这通常涉及到图片展示、用户交互以及可能的动画效果。以下是关于这个主题的详细知识点: 1. jQuery选择器:jQuery的选择器...
**KTH-TIPS灰度纹理数据集详解** KTH-TIPS(KTH-Texas Institute of Photography and Shape)是一个广泛使用的图像数据库,特别是针对纹理分析和图像分类任务。这个数据集包含了大量的灰度纹理图像,是计算机视觉...
**插件的安装与使用** 要使用jQuery_Tips插件,首先需要在页面中引入jQuery库和该插件的JavaScript文件。在本例中,文件名为`jQuery-toolTip20160904`,这可能包含插件的主脚本和其他资源,如CSS样式文件。将这些...
wxPython Grid Tips and Tricks
在“Echarts地图tips轮播.rar”这个压缩包中,包含的是一个实现了ECharts地图上Tips(提示框)轮播功能的示例项目。 首先,我们来详细解释一下什么是ECharts中的Tips。Tips,也称为Tooltip,是ECharts中用于显示...
### 《100 Power Tips for FPGA Designers》核心知识点概览 #### 一、书籍简介与背景 《100 Power Tips for FPGA Designers》是一本由Evgeni Stavinov撰写的专为FPGA设计人员提供的实用指南。本书版权为2011年,...
作为Swift开发者,掌握一些实用的Tips能够显著提高开发效率和代码质量。"Onevcat Swifter - Swift 开发者必备 Tips"正是这样一份资源,它可能包含了关于Swift编程的诸多技巧和最佳实践。 1. **类型推断与强制解包**...
在网页开发中,提示信息框(Tips)是一种常见的交互元素,用于向用户显示临时或辅助性的信息。在JavaScript中,我们可以轻松实现这种自动动态的tips提示信息框效果,以提高用户体验。下面将详细介绍如何利用...
在Windows编程中,提示框(Tips)是一种常见且实用的功能,它可以在用户将鼠标悬停在特定控件上时提供额外的信息。标题“弹出提示框 tips”指的是一个基于CWnd类实现的自定义弹出式提示框,这种提示框能够在鼠标指针...
利用Python进行数据分析,小费数据集。
在Swift编程语言的世界里,掌握一系列实用的技巧和最佳实践对于提升开发效率至关重要。...通过阅读《Swift tips》这本书,开发者将能够更好地理解并掌握Swift 4.0的精髓,从而在实际项目中游刃有余。
Android-Tips This is an awesome list of tips for android. If you are a beginner, this list will be the first choice for you when you have a difficult time. Welcome Star and Fork, your support is my ...