如何将rgb jpg图像转换为cmyk jpg

时间:2019-01-16 21:14:13

标签: image go

我正在尝试将以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")

0 个答案:

没有答案