Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何传递参数?_C_Imagemagick_Magickwand - Fatal编程技术网

C 如何传递参数?

C 如何传递参数?,c,imagemagick,magickwand,C,Imagemagick,Magickwand,我一直在将convert rose.png-稀疏颜色重心'0,0黑色69,0白色RoseMediated.png转换为MagickWand C API double arguments[6]; arguments[0] = 0.0; arguments[1] = 0.0; // arguments[2] = "black"; arguments[2] = 69.0; arguments[3] = 0.0; // arguments[5] = "white"; MagickSparseColor

我一直在将
convert rose.png-稀疏颜色重心'0,0黑色69,0白色RoseMediated.png
转换为MagickWand C API

double arguments[6];
arguments[0] = 0.0;
arguments[1] = 0.0;
// arguments[2] = "black";
arguments[2] = 69.0;
arguments[3] = 0.0;
// arguments[5] = "white";

MagickSparseColorImage(wand0, BarycentricColorInterpolate, 4,arguments);
MagickWriteImage(wand0,"rose_cylinder_22.png");
我不知道如何传递双参数。 用于方法的防御

更新: 源图像

在我执行了
convert rose.png-sparse color重心'0,0 black 69,0 white'roseModified.png
之后,我得到了下图


我的C程序没有这样的输出。可能有白色和黑色的颜色。

对于稀疏颜色,您需要将每个通道的颜色转换为双色。根据生成备件颜色点所需的动态程度,可能需要开始构建基本堆栈管理方法

这里有一个例子。(请注意,这是一个快速的示例,可以大大改进)

#包括
#包括
//让我们创建一个结构来跟踪参数。
结构参数{
大小/数量;
双*值;
};
//设置结构,并为所有颜色分配足够的内存。
无效分配参数(结构参数*堆栈,大小)
{
堆栈->计数=0;
//(2个坐标+3个颜色通道)*颜色数量
堆栈->值=malloc(sizeof(double)*(size*5));
}
//在结构中附加一个双精度值。
void push_double(结构参数*堆栈,双值)
{
堆栈->值[堆栈->计数+]=值;
}
//将颜色的所有部分附加到结构。
void push_颜色(结构参数*堆栈、像素和*颜色)
{
推双(堆栈,像素红色(颜色));
推双(堆叠,像素绿色(颜色));
推双(堆叠,像素蓝(颜色));
}
#定义颜色2的数量
int main(int argc,const char*argv[]{
MagickWandGenesis();
魔杖*魔杖;
像素**颜色;
结构参数A;
分配参数(&A,颜色的数量);
颜色=新像素(颜色的数量);
PixelSetColor(颜色[0],“黑色”);
PixelSetColor(颜色[1],“白色”);
//0,0黑色
双推(&A,0);
双推(&A,0);
推送颜色(&A,颜色[0]);
//69,0白色
双推(&A,69);
双推(&A,0);
推送颜色(&A,颜色[1]);
//转换玫瑰:
魔杖=新魔杖();
MagickReadImage(魔杖,玫瑰:);
//-稀疏颜色重心“0,0黑色69,0白色”
MagickSparseColorImage(魔杖、重心颜色插值、A.计数、A.值);
MagickWriteImage(wand,“/tmp/output.png”);
MagickWandTerminus();
返回0;
}

你已经做的事情有什么问题吗?我还没有得到预期的结果,对用args写的黑白图感到困惑
-稀疏颜色重心'0,0黑色69,0白色
只是一个猜测:用
0
表示黑色,用
0xffffff
表示白色。@alk我更新了我的问题。谢谢@emcconville。我很快会查的。你能检查一下这个吗?