我想将参数信息添加到作为研究项目一部分的绘图中。我知道png具有添加注释的文本块。 (我不是png专家,但我认为它使用tEXt块。)使用Gimp,在图像属性下,可以添加可由其他软件(例如,通过Mac预览中的“检查器”)读取的注释。确保有一个等效的Windows)。我们用ggsave制作图像。我没有看到ggsave的任何参数,该参数允许我们写入png文件的“ comment”块。我尝试使用png :: readPNG和png :: writePNG函数
im <- readPNG("test1.png",native=FALSE,info=TRUE)
md <- c(comment=paste0(date=date(),machine=Sys.info()['nodename']))
writePNG(image=im,target="test1_md1.png",text=md,metadata = md)
im2 <- readPNG("test1_md1.png",native=FALSE,info=TRUE)
attr(img2, "info")
我可以打开新的png文件,它看起来像旧的png文件。但是,注释块未填充。如您所见,数据已写入文件中,但是gimp和Preview都无法读取它。有没有一种方法可以在注释块中写入元数据,以便预览和gimp可以正确读取它?
谢谢
更新:好的,png :: writePNG实际上确实写入了tEXt块,但是gimp和Preview均未读取该文本块。我写了一个简单的Java程序来读取块。
IHDR null javax.imageio.metadata.IIONamedNodeMap@133314b
width = 2580 height = 1800 bitDepth = 8 colorType = RGBAlpha compressionMethod = deflate filterMethod = adaptive interlaceMethod = none
tEXt null javax.imageio.metadata.IIONamedNodeMap@b1bc7ed
tEXtEntry null javax.imageio.metadata.IIONamedNodeMap@7cd84586
keyword = date value = Tue Dec 4 12:55:45 2018
tEXtEntry null javax.imageio.metadata.IIONamedNodeMap@30dae81
keyword = machine.nodename value = mycomputer.xyz.org
在某处是否有单独的评论栏?那就是我要写入的块。
更新2::似乎gimp / preview读取了iTXt块。所以问题就变成了我可以从R写入iTXt块了。