使用R

时间:2018-12-03 16:50:06

标签: r png metadata

我想将参数信息添加到作为研究项目一部分的绘图中。我知道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块了。

0 个答案:

没有答案