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。我很快会查的。你能检查一下这个吗?