1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| package main
import ( "errors" "github.com/nfnt/resize" "image" "image/draw" "image/jpeg" "image/png" "os" "strings" )
func main() {
index := os.Args[2] imgC := os.Args[1]
k := "/opt/server/games-server/upload/gy/k" + index + ".png" imgb, _ := os.Open("/opt/server/games-server" + imgC) img, _ := jpeg.Decode(imgb) defer imgb.Close()
wmb, _ := os.Open(k) watermark, _ := png.Decode(wmb) defer wmb.Close()
offset := image.Pt(0, 0) b := watermark.Bounds() m := image.NewRGBA(b) imgW := b.Size().X imgH := b.Size().Y wd := 1400 / imgW newImg := ImageResize(img, 1400, imgH*wd)
draw.Draw(m, newImg.Bounds().Add(image.Pt(50, 100)), newImg, image.ZP, draw.Src) draw.Draw(m, watermark.Bounds().Add(offset), watermark, image.ZP, draw.Over) imgw, _ := os.Create("/opt/server/games-server" + strings.Replace(imgC, "oldpic", "newpic", -1)) jpeg.Encode(imgw, m, &jpeg.Options{jpeg.DefaultQuality}) defer imgw.Close() }
func ImageResize(src image.Image, w, h int) image.Image { return resize.Resize(uint(w), uint(h), src, resize.Lanczos3) }
func ImageCopy(src image.Image, x, y, w, h int) (image.Image, error) {
var subImg image.Image
if rgbImg, ok := src.(*image.YCbCr); ok { subImg = rgbImg.SubImage(image.Rect(x, y, x+w, y+h)).(*image.YCbCr) } else if rgbImg, ok := src.(*image.RGBA); ok { subImg = rgbImg.SubImage(image.Rect(x, y, x+w, y+h)).(*image.RGBA) } else if rgbImg, ok := src.(*image.NRGBA); ok { subImg = rgbImg.SubImage(image.Rect(x, y, x+w, y+h)).(*image.NRGBA) } else {
return subImg, errors.New("图片解码失败") }
return subImg, nil }
|