magik++api中用于调整大小的默认过滤器类型

Default filter type for resize in magick++ api

本文关键字:默认 过滤器 类型 用于 调整 magik++api      更新时间:2023-10-16

我正在尝试使用C++中的Magick++api调整图像大小。我已经使用了以下代码,并且运行良好。

Image second = image;
Geometry newSize = Geometry(69,69);
// Resize without preserving Aspect Ratio
newSize.aspect(true);
second.resize(newSize);

结果很好,但我需要知道它使用的默认过滤器类型,因为我没有在resize()函数中给出任何其他参数。我在文件中搜索过,但找不到太多。谢谢你的帮助。

在MagickCore库中,ReszieImage方法默认为LanczosFilter

来自MagickCore/resize.c

filter_type=LanczosFilter;
if (filter != UndefinedFilter)
    filter_type=filter;

但是,在Magick++中,默认的filterType是UndefinedFilter。采取以下措施。。

Magick::Image image("rose:");
std::cout << image.filterType() << std::endl;
//=> 0

IMHO,始终使用Magick::image::filterType( const Magick::FilterTypes filterType_ )定义过滤器。将来阅读代码时会有所帮助。

我已经得到了自己问题的答案。这是Lanczos的重新采样。一个非常好的magik++文档可以在这里找到。