參考資料:
https://imagemagick.org/discourse-server/viewtopic.php?t=36184
https://www.imagemagick.org/discourse-server/viewtopic.php?t=16464
https://www.zhihu.com/question/30419311 (各個 CMYK color profile 之間有哪些區別?)
摘自網上的一段話
也許它們是:
1.具有嵌入式配置文件的CMYK。
2. CMYK,沒有嵌入式配置文件。
(1)可以使用“ -profile sRGB.icc”而不是“ -colorspace sRGB”或“ -strip”進行轉換。
(2)需要猜測,例如分配CMYK配置文件,然后與(1)相同。
也就是說,CMYK 圖片分兩種情況:
1. 如果這個 CMYK 圖片有配置文件(icc profile),在轉換成 sRGB時,可以通過 -profile sRGB.icc 來進行色彩我轉換。
2. 如果這個 CMYK 圖片不帶配置文件(icc profile),那就只能先給這個 CMYK 圖片指定一個配置文件, 然后再通過 -profile sRGB.icc 來進行色彩我轉換,例如使用下面的這個命令:
convert cmyrk.jpg -profile USWebCoatedSWOP.icc -profile sRGB.icc -colorspace sRGB srgb.jpg
---------------------------------------------------
通過 identify.exe -verbose cmyk.jpg 可以查看一個 cmyk 圖片是否帶有 icc 配置文件。
---------------------------------------------------
注意: 測試的時候發現一個優先級問題:
convert -verbose cmyk3.jpg -profile sRGB.icc -colorspace sRGB rgb3.jpg (這個是想要的效果)
convert -verbose cmyk3.jpg -colorspace sRGB -profile sRGB.icc rgb3.jpg
測試發現, -profile 與 -colorspace 都存在時, -colorspace 需要放在 -profile 后面執行。
---------------------------------------------------
經過查看 ImageMagick 的源代碼,證實 MagickGetImageProfile() 的返回值需要 MagickRelinquishMemory() 釋放。