如何提高gif图像的分辨率?

3
如何提高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) 

1
你的意思是你想改变图片的宽度和高度?我问这个问题是因为我不确定你所说的图像分辨率是什么意思。我通常用这个词来指代我的电脑显示器分辨率。 - agstudy
是的,但不能失去质量。我尝试过gifsicle,但使用gifsicle会导致质量下降。 - 384X21
2
movie3D 使用 Image Magick。您可以使用函数的 convert 参数来进行微调。请参阅帮助文件。 - Roland
1个回答

4

我认为你不能够改变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")

如果这个方法不能完全解决您的问题,请检查使用的函数并调整设置。


我在R-help论坛上读到了关于更改窗口大小的内容。我尝试了一下,但是出现了以下错误(其他地方也有人报告过,可能像你说的那样已经损坏):Error in par3d(windowRect = c(0, 0, 500, 500)) : unknown error getting rgl parameter "windowRect"。顺便说一句,我使用的是R 2.12和rgl 0.92.794。 - 384X21
你是用Mac还是Windows系统?在Mac上,通常会留下一些早期安装的文件,这可能会导致出现这些问题,必须找到并删除它们。如果你使用的是Mac系统,请尝试搜索你的错误信息,看看是否能找到相关的解决方法(我已经很久没有修复过我的电脑了,所以也请检查主要的帮助文档)。 - Bryan Hanson
我在使用Linux。我会检查更新软件包是否有帮助。谢谢。 - 384X21
检查一下... Mac可以运行Linux,所以问题可能是相同的... 在这里查看已接受的答案:https://dev59.com/Bmkw5IYBdhLWcg3wdKUv 但这看起来非常Mac特定,除非您的系统使用X11窗口。您也可以尝试从源代码构建。 - Bryan Hanson
@BryanHanson 你引发了一场争论 :-). Mac电脑不运行Linux -- 它们运行的是Darwin,这是一个基于Unix的内核。 - Carl Witthoft
@CarlWitthoft 我想那还好,这里气温只有华氏10度,我们需要暖气! - Bryan Hanson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接