繁体   English   中英

将 CLI ImageMagick 翻译成 Magick++:阈值和深度

[英]Translate CLI ImageMagick to Magick++: threshold and depth

我在代码中将system调用转换为Magick++ ,但在转换thresholddepth时遇到了一些问题。

原本的:

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");

chopcrop的行为与我预期的一样,但 rest 没有。 thresholddepth命令分别采用doublesize_t 所以我在那里写的东西似乎会起作用。 但是,如果启用这些行中的任何一个,则结果图像几乎全是白色的。

有没有更正确的方法来做到这一点?

Mark Setchell 的评论是正确的。 Maigck::Image.threshold的参数必须按 QuantumRange 缩放(由 C 宏定义提供)。

temp_img.threshold(QuantumRange * 0.5);

大多数 arguments 预计会出现这种缩放比例,它们是百分比。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM