【问题标题】:Default filter type for resize in magick++ api在magick ++ api中调整大小的默认过滤器类型
【发布时间】:2016-08-12 22:38:24
【问题描述】:

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

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

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

【问题讨论】:

    标签: c++ image-processing imagemagick magick++


    【解决方案1】:

    在 MagickCore 库中,ReszieImage 方法 does default to LanczosFilter

    来自MagickCore/resize.c

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

    但是在Magick++ 中,默认过滤器类型是UndefinedFilter。采取以下..

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

    恕我直言,请始终使用Magick::image::filterType( const Magick::FilterTypes filterType_ ) 定义过滤器。对你以后阅读代码会有帮助。

    【讨论】:

    • 你能告诉我UndefinedFilter是什么意思吗?
    • UndefinedFilter 仅表示您的应用程序代码没有定义FilterType。在 ImageMagick 中,Undefined 前缀用于标准化枚举器中的第一个 (0) 项
    【解决方案2】:

    我已经得到了我自己问题的答案。是Lanczos resampling。 一个很好的magick++ documentation 可以在这里找到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-16
      • 1970-01-01
      • 2013-02-02
      • 2021-03-19
      • 1970-01-01
      • 2017-03-24
      相关资源
      最近更新 更多