【问题标题】:How to increase resolution of gif image?如何提高gif图像的分辨率?
【发布时间】:2013-01-06 22:00:28
【问题描述】:

如何提高由 R 的 rgl 包生成的 gif 图像的分辨率(plot3d 和 movie3d 函数) - 无论是外部还是通过 R?

R 代码:

MyX<-rnorm(10,5,1)
MyY<-rnorm(10,5,1)
MyZ<-rnorm(10,5,1)
plot3d(MyX, MyY, MyZ, xlab="X", ylab="Y", zlab="Z", type="s", box=T, axes=F)
text3d(MyX, MyY, MyZ, text=c(1:10), cex=5, adj=1)
movie3d(spin3d(axis = c(0, 0, 1), rpm = 4), duration=15, movie="TestMovie",
                                                type="gif", dir=("~/Desktop"))

输出:

更新

在代码开头添加这一行解决了问题

r3dDefaults$windowRect <- c(0, 100, 1400, 1400) 

【问题讨论】:

  • 您的意思是要更改图像的宽度和高度?我问是因为我不确定您所说的图像分辨率是什么意思。我用这个词来形容我的电脑显示器..
  • 可以,但不会降低质量。试过gifsicle。我用 gifsicle 降低质量
  • movie3D 使用 Image Magick。您可以使用函数的convert 参数来微调它。请参阅帮助文件。

标签: linux r gif rgl


【解决方案1】:

我认为您对 gif 本身的分辨率无能为力。我认为您必须使图像更大作为替代方案,然后当您将其显示得更小时,它看起来会更好。这是未经测试的,因为最近的升级对我来说破坏了一两件事,但这确实在 2.15 下工作:

par3d(windowRect = c(0, 0, 500, 500)) # make the window large
par3d(zoom = 1.1) # larger values make the image smaller

# you can test your settings interactively at this point

M <- par3d("userMatrix") # save your settings to pass to the movie

movie3d(par3dinterp(userMatrix=list(M,
    rotate3d(M, pi, 1, 0, 0), 
    rotate3d(M, pi, 0, 1, 0) ) ), 
    duration = 5, fps = 50,
    movie = "MyMovie")

HTH。如果它不适合您,请检查使用的功能并调整设置。

【讨论】:

  • 我在 R-help 论坛中阅读了有关更改窗口大小的信息。试过了。我收到以下错误(由其他地方的其他人报告,可能如您所说的那样被破坏):par3d 中的错误(windowRect = c(0、0、500、500)):获取 rgl 参数“windowRect”的未知错误。顺便说一句,我使用 R 2.12 和 rgl 0.92.794
  • 您使用的是 Mac 还是 Windows?在 Mac 上,通常会从早期安装中留下一个导致此类问题的恶意文件,必须找到并删除。如果您使用的是 Mac,请尝试在谷歌上搜索您的错误,看看是否可以找到说明(我已经修复了一段时间,不太记得了 - 还要查看主要帮助档案)。
  • 我在 Linux 上。将检查更新软件包是否有帮助。谢谢
  • 检查一下...Mac 运行 linux,所以问题可能是一样的...请在此处查看接受的答案:stackoverflow.com/questions/9878693/… 但这看起来非常特定于 Mac,除非您的系统使用 X11 窗口.您也可以尝试从源代码构建。
  • @BryanHanson 你开启了一场火焰战争:-)。 Mac 不运行 Linux,而是运行基于 Unix 的内核 Darwin。
猜你喜欢
  • 1970-01-01
  • 2020-06-04
  • 1970-01-01
  • 2010-10-19
  • 2014-11-20
  • 1970-01-01
  • 2017-12-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多