R tcltk:尝试根据操作系统显示png文件时出错

时间:2016-10-09 20:13:48

标签: r tcl png tk

这是我在R中编写的不同代码所遇到的问题。 基本上,我想生成一个显示图片的窗口(.png文件)。以下是thisthis的指南,我想出了这样的代码:

library(tcltk)
tmpFile <- tempfile(fileext = ".png")
download.file("https://www.r-project.org/logo/Rlogo.png", tmpFile)

tcl("image","create","photo", "imageLogo", file=tmpFile)
win1 <- tktoplevel()
tkpack(ttklabel(win1, image="imageLogo", compound="image"))

这在Mac OS下运行正常,但在Linux和Windows上都没有,我在这里显示了这样的错误消息:

  

[tcl]无法识别图像文件中的数据

当我想显示图表时,我可以找到一些解决方法,例如使用包tkrplotigraph。尽管如此,我真的很想知道为什么我在Linux或Windows上运行我的脚本时会遇到这样的错误,而在Mac OS上它运行得很好。

在此问题很明显的情况下道歉,但我没有发现任何与tcltk包的潜在差异,具体取决于操作系统。

2 个答案:

答案 0 :(得分:0)

Tk对PNG的原生支持在8.6中添加。在此之前,您需要将tkimg extension加载加载到Tk 中以添加所需的图像格式处理程序。如果您正在使用的Rcl正在使用的Tcl / Tk的安装,您可能可以使用它:

tclRequire("Img")

一旦你充分初始化了东西。是的,由于历史原因,内部使用的名称是“Img”,但这是不可能搜索的! (这是关键的事情in this mailing list message from way back。)

但是,将Tcl和Tk的版本升级到8.6可能是一个更好的举措。

答案 1 :(得分:0)

最后还有一点,我想结束这个问题并总结一下我的问题所提出的不同建议:

  • R附带了Tcl 8.5,即使使用最新版本3.3.2,这意味着无法通过常规命令将PNG文件嵌入到由Tcl / Tk创建的窗口中。由于某些原因,它适用于Mac OS,但不要指望这在其他操作系统上很容易使用。
  • 为了在R中由Tcl / Tk生成的窗口中显示图片,图形等,可以更好地查找使用GIF支持(如果可能)或尝试其他解决方案(请参阅可能的替代选项的问题)。
  • 如果确实要显示PNG文件,解决方案包括安装Tcl 8.5(例如ActiveTcl)和扩展名Img。为了使用您刚刚安装在计算机上的Tcl / Tk软件包,您可以参考R FAQ for Windows(如FAQ中所述,您需要安装Tcl 8.5 - 我试过Tcl 8.6,因此希望解决我的问题,但它没有工作)。基本上,您需要设置环境变量(MY_TCLTK)并将路径放在安装包Tcl / Tk的位置。不用说,Tcl / Tk常用于R中以实现GUI;如果你必须通过非常复杂的程序来设置系统,那么这个包肯定会失去它的优势。
  • 最后,由于Tcl 8.6应该很快或更晚可用R(已在devel版本中实现),因此该问题将事实上过时。