繁体   English   中英

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

[英]R tcltk: error when trying to display a png file depending on the OS

这是我在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软件包潜在差异的任何信息。

Tk对PNG的本机支持在8.6中添加。 在此之前,您需要将tkimg扩展名加载到Tk中以添加所需的图像格式处理程序。 如果正确设置了R正在使用的Tcl / Tk的安装,则可以使其与以下设备一起使用:

tclRequire("Img")

一旦您充分初始化了事情。 是的,出于历史原因,内部使用的名称为“ Img ”,但这根本无法搜索! (这是此邮件列表消息中的关键内容。)

但是,将Tcl和Tk的版本升级到8.6可能是更好的选择。

最后,最近,我想结束这个问题,并总结一下针对我的问题提出的不同建议:

  • R随Tcl 8.5一起提供,即使最新版本为3.3.2,这也意味着无法将带有常规命令的PNG文件嵌入到使用Tcl / Tk创建的窗口中。 由于某些原因,它可以在Mac OS上运行,但是不要指望它可以在其他OS上轻松运行。
  • 为了在R中的Tcl / Tk生成的窗口中显示图片,图形等,最好使用GIF支持(如果可能)或尝试其他解决方案(请参阅问题以获取可能的替代选项)。
  • 如果确实要显示PNG文件,则解决方案包括安装Tcl 8.5(例如ActiveTcl)以及扩展名Img。 为了使用您刚刚安装在计算机上的Tcl / Tk软件包,您可以参考WindowsR FAQ (例如FAQ中所述,您需要安装Tcl 8.5-我曾尝试过Tcl 8.6,从而希望能解决我的问题,但是没有用)。 基本上,您需要设置一个环境变量( MY_TCLTK )并放置软件包Tcl / Tk的安装路径。 不用说,R中通常使用Tcl / Tk来实现GUI。 如果您必须经过非常复杂的程序来设置系统,则该软件包肯定会失去其优势。
  • 最后,由于Tcl 8.6可能很快就会在R中提供(已在devel版本中实现),因此实际上已经过时了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM