我试图将一个简单的ImageMagick命令行转换为Magick++/c++代码。但是它没有像预期的那样工作。官方网站缺乏API示例。我不能找出问题,即使我潜入相关的实现代码。谷歌没有给予任何提示。
图像魔术命令:
convert -size 543x114 xc: -sparse-color Barycentric '0,0 red 0,%h blue' gradient.png
我想通过下面的代码复制它的效果,但是输出不一致。
**Magick++**代码:
#include <Magick++.h>
int main()
{
int width = 543;
int height = 114;
Magick::Image gradImage(Magick::Geometry(width, height), Magick::Color("white"));
// installed magick++ is built --with-quantum-depth=8
double maxRGB = 255;
double args[] = {
0, 0,
maxRGB, 0, 0,
0, height,
0, 0, maxRGB
};
gradImage.sparseColor(
(Magick::ChannelType)((Magick::DefaultChannels & ~Magick::OpacityChannel) & ~Magick::IndexChannel),
Magick::BarycentricColorInterpolate,
sizeof(args) / sizeof(double),
args
);
gradImage.write("gradient.png");
}
C标记列表.txt:
cmake_minimum_required(VERSION 3.16)
project(demo)
find_package(ImageMagick COMPONENTS Magick++)
include_directories(
${ImageMagick_INCLUDE_DIRS}
)
add_executable(
demo
main.cpp
)
target_link_libraries(
demo
${ImageMagick_Magick++_LIBRARY}
)
由命令生成:
由magick++生成:
其他信息:
- 操作系统:Ubuntu 20.04
- 图像魔术师:7.1.1(构建来源:./configure --使用量程深度=8 && make)
任何帮助都是感激的!
我想magick++代码有相同的效果与命令行
1条答案
按热度按时间5t7ly7z51#
您几乎就能理解了!也许值得查看一下
GenerateCoefficients
的源代码,以读取预期的参数,并查看SparseColorOption
的源代码,以了解CLI选项是如何解析的。R, G, B
值应在0.0
和1.0
之间的范围内。DefaultChannels
。请尝试以下操作...
别忘了第一件事就是打电话给
Magick::InitializeMagick()
!