我正在尝试将360 png文件保存为R中带有图像magick的gif(我正在使用MacOS)

xn1cxnb4  于 2022-12-20  发布在  Mac
关注(0)|答案(1)|浏览(120)

请让我知道任何其他系统/代码我需要包括,因为我不熟悉写出图像到我的计算机.我正在创建360 png文件如下:

for(theta in 1:360){
    ic=as.character(theta)
    if(theta<10) ic=paste("00",ic,sep="")
    if(theta>=10 & theta<100) ic=paste("0",ic,sep="") # make filenames the same length
    fn=paste("c:iris360\\HW4_",ic,".png",sep="") #filename
    png(fn,width=1000,height=1000) # save as *.png
    p3(X1,X2, r=100,theta=theta,mainL=paste("theta =",theta))
    # legend("topleft",pch=16,cex=1.5,col=allcl)
    dev.off()
}
system("magick c:iris360\\HW4*.png c:iris.gif")

其中,p3只是一个函数,它取矩阵X1和X2,并绘制点及其线段(如果需要,请告诉我)。但是,我得到了以下错误:第一个月
我无法打开gif文件,因为我的mac说它已损坏或使用预览无法识别的文件格式。
更新1:我将fn的声明替换为

fn <- sprintf("c:iris360/HW4_%03i.png", theta)

以及在IC出现的任何地方用sprintf(“%03i”,theta)替换IC,但仍然得到相同的指定图像大小错误。
当我在终端中运行system命令时,仍然会收到相同的错误,要求我指定图像大小。

dxxyhpgq

dxxyhpgq1#

Magick需要知道一些事情(例如,图像大小,帧之间的延迟,要使用的图像,目标文件名),以便将png堆栈转换为gif。参见GIF动画和动画元数据

magick -delay 100  -size 100x100 xc:SkyBlue \
      -page +5+10  balloon.gif   -page +35+30 medical.gif  \
      -page +62+50 present.gif   -page +10+55 shading.gif  \
      -loop 0  animation.gif

所以看起来你需要改变

system("magick c:iris360\\HW4*.png c:iris.gif")

变成更像是

system("magick -delay 10 -size 100x100 —loop 0 c:iris360\\HW4*.png c:iris.gif")

相关问题