美文网首页Go语言Go
go - 图片合成

go - 图片合成

作者: 反者道之动001 | 来源:发表于2018-03-05 13:42 被阅读124次

    不知道写啥标题 但是不写又不好看, 哦 那就写吧。

    package main
    
    import (
        "image"
        "image/draw"
        "image/jpeg"
        "image/png"
        "os"
    )
    
    func main() {
        imgb, _ := os.Open("image.jpg")
        img, _ := jpeg.Decode(imgb)
        defer imgb.Close()
    
        wmb, _ := os.Open("watermark.png")
        watermark, _ := png.Decode(wmb)
        defer wmb.Close()
    
        offset := image.Pt(200, 200)
        b := img.Bounds()
        m := image.NewRGBA(b)
        draw.Draw(m, b, img, image.ZP, draw.Src)
        draw.Draw(m, watermark.Bounds().Add(offset), watermark, image.ZP, draw.Over)
    
        imgw, _ := os.Create("watermarked.jpg")
        jpeg.Encode(imgw, m, &jpeg.Options{jpeg.DefaultQuality})
        defer imgw.Close()
    }
    

    上面的代码来源自 https://stackoverflow.com/questions/16100023/manipulating-watermark-images-with-go 的答案。

    _的地方替换下就可以, 如果都是注释,方式一大堆代码看不清楚。

    注意下这里的格式
    jpeg.Decode 或者 png.Decode都有可能解析出错。

    原因一般都是图片格式不对, png的图不能用jpge的解析哦, 记得对号入座。

    还有png的格式不一样是真的png格式, 比如本来就是jpge的格式,然后改了后缀成png, 那也是jpg格式

    图片合成可以多个贴 贴贴

    楼上代码亲测可用, 如果不行就要么是图片有问题, 要么路径错误。

    路径的话绝对理解就是从盘符开始, 比如 D:/www/go/src/...


    先更新到这里, 午安,

    END

    相关文章

      网友评论

        本文标题:go - 图片合成

        本文链接:https://www.haomeiwen.com/subject/pwchfftx.html