有没有办法在不使用 ImageMagick 或其他第三方软件的情况下在 R 中制作 GIF?

Posted

技术标签:

【中文标题】有没有办法在不使用 ImageMagick 或其他第三方软件的情况下在 R 中制作 GIF?【英文标题】:Is there a way to make GIFs in R without the use of ImageMagick or other third party software? 【发布时间】:2017-05-12 01:29:35 【问题描述】:

我一直在尝试从 R 中生成和保存的绘图生成 GIF。在当前系统中,我们使用 ImageMagick 会带来很大的不便。是否有任何其他可以创建 GIF 的 R 原生方式或包?我研究过堆栈溢出,只发现涉及 ImageMagick 的响应。

【问题讨论】:

如果有帮助,pngs 是一种类似的文件形式,并且可以在带有 png 函数的基础 R 中使用。 我已经在使用 pngs 作为将转换为 gif 的绘图的保存格式。你知道有什么方法可以轻松地将它们转换成 gif 吗? 这是一个很好的 superuser post 使用 imagemagick 将 png 转换为 jpeg。我想在任何代码行中用 gif 替换 jpeg 就可以了。 【参考方案1】:

没有 R 内置的方式来制作不依赖外部库的 gif(据我所知)将保存为单帧的图像转换为 gif。

对于这种转换,ImageMagick 可能是最常见的,但您也可以使用其他工具。 The animation package 系统要求建议您可以将其与 GraphicsMagick 甚至 LyX 一起使用,或者您可以手动(或以编程方式,如果您可以滚动自己的 API)使用任意数量的 online tools。

【讨论】:

【参考方案2】:

您没有提及您的操作系统,也没有提及您是指简单的单帧 GIF 还是动画 GIF。如果您只想要简单的 GIF,您可以使用 NetPBM 包,它比 ImageMagick 更轻且更易于安装。

因此,假设您有一个名为 input.png 的 PNG 文件,并且您想将其转换为名为 result.gif 的 GIF,您可以这样做:

pngtopam < input.png | pamtogif > result.gif

如果您想在 R 中执行此操作,则需要使用 system() 命令:

system("pngtopam < input.png | pamtogif > result.gif")

如您所见,NetPBM 将所有输入转换为其自己的、标准的、最小公分母 PAM 格式,然后再转换为所有已知的输出格式,因此在它支持 N 种格式,而不是 N^2 次转换——太棒了!

所以,对于 64 种格式:

64^2=4,096   (conversions to write)

2x64=128     (conversions to write)

【讨论】:

以上是关于有没有办法在不使用 ImageMagick 或其他第三方软件的情况下在 R 中制作 GIF?的主要内容,如果未能解决你的问题,请参考以下文章

ImageMagick:在不使用外部文本文件的情况下将选择性图像转换为多页 PDF?

imagemagick:根据r / g / b条件有选择地填充像素?

是否可以在不干扰服务器的情况下使用 Charles 代理或任何其他工具故意生成错误 500

有没有办法在不使用 /UNICODE 编译的情况下使用 MFC 的 CEdit 函数“ShowBalloonTip”?

C++:有没有办法在不暴露其他私有成员的情况下限制对某些类的某些方法的访问?

有没有办法在不使用 PHP 或 JavaScript 的情况下让 textarea 拉伸以适应其内容?