图像处理

最后更新于:2022-04-02 02:39:47

[TOC] > [github](https://github.com/disintegration/imaging) ## 安装 ``` go get -u github.com/disintegration/imaging ``` ## 打开图片/ 输出图片 ``` //打开 src, err := imaging.Open("test/branches.png") //保存 err = imaging.Save(dst, "test/out_example.jpg") ``` ## 缩放/剪切图片的几种方式 ``` img1 := imaging.Resize(src, 200, 200, imaging.Lanczos) //重置大小 img2 := imaging.Fit(src, 600, 200, imaging.Box) //适应指定的/最大宽度和高度 img3 := imaging.Fill(src, 200, 200, imaging.Center, imaging.Lanczos) //通过中心截取 img3 := imaging.CropAnchor(src, 200, 200, imaging.Center) //剪切图片,从中心截取200 大小的图 ``` ## 缩略图 ``` imaging.Thumbnail(img1, 100, 100, imaging.Lanczos) ``` ## 调整模糊度 ``` dstImage := imaging.Blur(img1, 0.5) ``` ## 调整对比度 ``` imaging.AdjustContrast(img1, 20) //范围 -100 ~ 100 ``` ## 明暗度 ``` imaging.AdjustBrightness(img1, 20) ``` ## 反向像素产生一个图片 ``` imaging.Invert(img1) ``` ## 旋转 ``` img1 := imaging.FlipH(src) //左右颠倒 img1 := imaging.FlipV(src) //上下颠倒 img1 := imaging.Transpose(src) //逆时针旋转 90度 //同 imaging.Rotate90(src) img1 := imaging.Transverse(src) //顺时针旋转9度 imaging.Rotate180 //逆时针180度 imaging.Rotate270 //逆时针270度 ``` ## 并接多张图片为一张 ``` //打开图片 src, err := imaging.Open("test/branches.png") if err != nil { log.Fatalf("failed to open image: %v", err) } img1 := imaging.Resize(src, 200, 200, imaging.Lanczos) img2 := imaging.Fit(src, 600, 200, imaging.Box) img3 := imaging.Fill(src, 200, 200, imaging.Center, imaging.Lanczos) img4 := imaging.Resize(src, 200, 200, imaging.Box) dst := imaging.New(400, 400, color.NRGBA{0, 0, 0, 0}) //填充颜色为黑色 dst = imaging.Paste(dst, img4, image.Pt(0, 0)) dst = imaging.Paste(dst, img1, image.Pt(0, 200)) dst = imaging.Paste(dst, img2, image.Pt(200, 0)) dst = imaging.Paste(dst, img3, image.Pt(200, 200)) // 输出图片 err = imaging.Save(dst, "test/out_example.jpg") if err != nil { log.Fatalf("failed to save image: %v", err) } ```
';