使用Go和OpenCV在图像中读取/写入ICC配置文件
我正在编写代码来调整图像的大小和围棋。调整大小后,我写出的图像缺少原始图像中的ICC配置文件 是否有任何Go或C库可以读/写ICC配置文件?目标是不使用命令行工具,而是使用Go/C库,这样我就可以在流程中完成所有这些工作。我知道exiftool存在,并且可以为我做这件事,但我不想使用perl脚本。我只知道: 从JPEG缓冲区提取的小实用程序包 它接受带有JPEG的使用Go和OpenCV在图像中读取/写入ICC配置文件,c,opencv,image-processing,go,color-profile,C,Opencv,Image Processing,Go,Color Profile,我正在编写代码来调整图像的大小和围棋。调整大小后,我写出的图像缺少原始图像中的ICC配置文件 是否有任何Go或C库可以读/写ICC配置文件?目标是不使用命令行工具,而是使用Go/C库,这样我就可以在流程中完成所有这些工作。我知道exiftool存在,并且可以为我做这件事,但我不想使用perl脚本。我只知道: 从JPEG缓冲区提取的小实用程序包 它接受带有JPEG的io.Reader,并从该JPEG返回带有嵌入ICC配置文件的缓冲区(如果有)。 如果没有,则返回一个空缓冲区 经过更多的研究,我找到
io.Reader
,并从该JPEG返回带有嵌入ICC配置文件的缓冲区(如果有)。如果没有,则返回一个空缓冲区
经过更多的研究,我找到了答案 libvips不会剥离任何嵌入式配置文件。其中提到: 文件加载/保存操作(如tiffload、jpegsave等)与颜色无关。加载时,他们将看到的任何ICC配置文件作为元数据附加到VIP图像,保存时,他们将任何附加的配置文件写入文件。他们的目的是给你一些非常接近实际存储在文件中的东西,并留下颜色处理供你安排
opencv在读取时会丢弃任何图像头,因此不会保留icc或exif数据。(还有,将opencv不推荐的c-api包装起来是一个糟糕的想法,imho。完全过时的东西)
import "github.com/vimeo/go-iccjpeg/iccjpeg"
iccjpeg.GetICCBuf(input io.Reader) ([]byte, error)