【问题标题】:ImageMagick "convert" utility Magick++ equivalent?ImageMagick“转换”实用程序Magick++等效?
【发布时间】:2011-05-10 00:24:39
【问题描述】:

对不起,如果标题没有任何意义。

目前,imagemagick convert 实用程序的以下参数非常适合我的需要。我正在尝试获取一个 .svg 文件,将其放大并将其写入为 png 文件。

 convert -density 36  home.svg  home_1.png

不幸的是,我需要使用 Magick++(ImageMagick 的 C++ 接口/API),但我似乎无法在 Magick++ 中获得等效的操作。

有没有 ImageMagick 专业人士可以帮助我解决这个问题?

我当前的代码是:

image.density(Geometry(36,36));

    image.read( "Character.svg" );

    image.write( "xx.png" ); 

我已经尝试移动image.density() 部分,但我的图像永远不会改变。它只是被光栅化并保存为 png。

【问题讨论】:

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


    【解决方案1】:

    我不是 ImageMagick 专业人士,但是当我尝试这段代码时:

    #include <Magick++.h>
    
    int main(int argc, char **argv) {
      Magick::Image img;
      img.density(Magick::Geometry(36,36));
      img.read(argv[1]);
      img.write(argv[2]);
    
      img.density(Magick::Geometry(72,72));
      img.read(argv[1]);
      img.write(argv[3]);
    }
    

    this SVG file,例如:

    $ ./resize example.svg out_small.png out_large.png
    

    ...文件out_small.png 是300x300 像素,而out_large.png 是600x600 像素。

    这是通过 cygwin 在 Windows 7 上运行的。

    【讨论】:

    • 哇,这很有趣。当我在环境中尝试几乎相同的代码时,它不起作用。使用您使用的相同 SVG 示例,我的输出都为 600x600 像素。我正在使用 MSVC,所以它可能被窃听了?
    • 当然,MSVC 可能对此有一些问题。我很好奇这是否适用于其他输入/输出文件格式,或者任何图像修饰符是否有效。
    • 我尝试了其他一些修饰符,例如 zoom(),它似乎可以工作,所以我认为 MSVC 只是在 SVG/密度方面存在问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    • 2016-03-23
    • 1970-01-01
    • 2021-10-24
    相关资源
    最近更新 更多