[英]Translate CLI ImageMagick to Magick++: threshold and depth
我在代码中将system
调用转换为Magick++
,但在转换threshold
和depth
时遇到了一些问题。
原本的:
convert /foo/bar.ppm -crop WxH+X+Y -threshold 50% -depth 1 /foo/out.ppm
我当前的C++
版本是:
Magick::InitializeMagick(*argv);
Magick::Image img;
img.read("/foo/bar.ppm");
Magick::Image temp_img(img);
temp_img.chop(Magick::Geometry(X,Y);
temp_img.crop(Magick::Geometry(W,H));
temp_img.threshold(.50);
temp_img.depth(1);
temp_img.write("/foo/out.ppm");
chop
和crop
的行为与我预期的一样,但 rest 没有。 threshold
和depth
命令分别采用double
和size_t
。 所以我在那里写的东西似乎会起作用。 但是,如果启用这些行中的任何一个,则结果图像几乎全是白色的。
有没有更正确的方法来做到这一点?
Mark Setchell 的评论是正确的。 Maigck::Image.threshold
的参数必须按 QuantumRange 缩放(由 C 宏定义提供)。
temp_img.threshold(QuantumRange * 0.5);
大多数 arguments 预计会出现这种缩放比例,它们是百分比。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.