我正在尝试将以rgb jpg图像上传的图像转换为cmyk jpg图像甚至pdf。我需要成为cmyk才能支持我们的某些打印机。这是我正在使用的代码,它确实可以输出图像,但是每当我在Adobe Illustrator中对其进行检查时,它始终会显示为rgb图像。
reader, err := os.Open("src.jpg")
if err != nil {
log.Fatal(err)
}
defer reader.Close()
m, _, err := image.Decode(reader)
if err != nil {
log.Fatal(err)
}
bounds := m.Bounds()
rect := image.Rect(0, 0, bounds.Dx(), bounds.Dy())
cmyk := image.NewCMYK(rect)
draw.Draw(cmyk, cmyk.Bounds(), m, bounds.Min, draw.Src)
cmykImage := cmyk.SubImage(rect)
out, err := os.Create("./output.jpg")
var opt jpeg.Options
opt.Quality = 100
jpeg.Encode(out, cmykImage, &opt)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
编辑: 放弃尝试查找本机go解决方案,而是安装了imagemagick并从go中调用其色彩空间转换cli。
cmd := exec.Command("convert", "src.jpg", "-colorspace", "CMYK", "output.jpg")
err := cmd.Start()
if err != nil {
log.Fatal(err)
}
log.Printf("Waiting for command to finish...")
err = cmd.Wait()
fmt.Println("Converted jpg")