2015-01-15 7 views
1

나는 Go 및 go-opencv package으로 이미지의 크기를 조정하는 코드를 작성하고 있습니다. 크기 조정이 수행 된 후에는 필기하는 이미지에 원본 이미지의 ICC 프로필이 누락되었습니다.Go 및 OpenCV가 포함 된 이미지에서 ICC 프로파일 읽기/쓰기

ICC 프로파일을 읽고 쓸 수있는 Go 또는 C 라이브러리가 있습니까? 목표는 명령 줄 도구를 사용하지 않고 Go/C 라이브러리를 사용하므로이 과정에서이 모든 작업을 수행 할 수 있습니다. 나는 exiftool이 존재하고 나를 위해이 일을 할 수 있다는 것을 알고 있지만 펄 스크립트를 사용하지는 않을 것입니다.

+1

opencv는 모든 이미지 헤더를 읽는 동안 폐기하므로 icc 또는 exif 데이터는 보존되지 않습니다. (또한 opencv의 사용되지 않는 c-api를 포장하는 것은 끔찍한 생각이다. imho. 완전히 구식 인 것들) – berak

답변

1

더 많은 조사가 끝나면 libvips과 go을 발견했습니다.

libvips는 포함 된 프로필을 제거하지 않습니다. 이 blog post은 다음을 언급합니다 :

파일로드/저장 작업 (예 : tiffload, jpegsave 등)은 색상을 사용하지 않습니다. 로드 할 때로드 된 ICC 프로파일은 메타 데이터로 vips 이미지에 첨부하고 저장시 첨부 된 프로파일을 파일에 씁니다. 그들은 파일에 실제로 저장된 내용에 매우 근접한 것을 제공하고 사용자가 준비 할 색상 처리를 남기고 자합니다.

0

난 단지 go-iccjpeg 알고 :

작은 유틸리티 패키지

은 JPEG 버퍼에서 International Color Consortium (ICC) profiles를 추출 할 수 있습니다.
import "github.com/vimeo/go-iccjpeg/iccjpeg" 

iccjpeg.GetICCBuf(input io.Reader) ([]byte, error) 

그것은 JPEG 함께 io.Reader 소요되며, 존재하는 경우, 즉 JPEG에서 내장 ICC 프로파일 버퍼를 리턴

.
값이 없으면 빈 버퍼를 반환합니다.