From eac2f17c8f27feae687e43480168e2919104dc36 Mon Sep 17 00:00:00 2001 From: gytisrepecka Date: Sun, 9 Feb 2020 18:32:32 +0200 Subject: [PATCH] Initial working version. --- app.go | 26 +++++++ cmd/webimg/.gitignore | 4 ++ cmd/webimg/main.go | 99 ++++++++++++++++++++++++++ cmd/webimg/result_img.jpg | Bin 0 -> 41963 bytes cmd/webimg/smplayer_preferences.jpg | Bin 0 -> 36541 bytes cmd/webimg/watermark_inretio-logo.png | Bin 0 -> 6079 bytes watermark.go | 96 +++++++++++++++++++++++++ 7 files changed, 225 insertions(+) create mode 100644 app.go create mode 100644 cmd/webimg/.gitignore create mode 100644 cmd/webimg/main.go create mode 100644 cmd/webimg/result_img.jpg create mode 100644 cmd/webimg/smplayer_preferences.jpg create mode 100644 cmd/webimg/watermark_inretio-logo.png create mode 100644 watermark.go diff --git a/app.go b/app.go new file mode 100644 index 0000000..499bc24 --- /dev/null +++ b/app.go @@ -0,0 +1,26 @@ +/* + * Copyright © 2020 Gytis Repečka (gytis@repecka.com) + * + * This file is part of webimg. + * + * webimg is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, included + * in the LICENSE file in this source code package. + */ + +package webimg + +import ( + "fmt" +) + +// FormatVersion constructs the version string for the application +func FormatVersion() string { + // return serverSoftware + " " + softwareVer + return "gowebimg 0.0.1" +} + +// OutputVersion prints out the version of the application. +func OutputVersion() { + fmt.Println(FormatVersion()) +} diff --git a/cmd/webimg/.gitignore b/cmd/webimg/.gitignore new file mode 100644 index 0000000..ae39434 --- /dev/null +++ b/cmd/webimg/.gitignore @@ -0,0 +1,4 @@ +webimg +webimg.exe +webimg.log + diff --git a/cmd/webimg/main.go b/cmd/webimg/main.go new file mode 100644 index 0000000..f167ba7 --- /dev/null +++ b/cmd/webimg/main.go @@ -0,0 +1,99 @@ +/* + * Copyright © 2020 Gytis Repečka (gytis@repecka.com) + * + * This file is part of webimg. + * + * webimg is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, included + * in the LICENSE file in this source code package. + */ + +package main + +import ( + "code.gyt.is/webimg" + "flag" + "fmt" + "log" + "os" + "time" +) + +func main() { + // webimg.PrintHello() + + // Set some parameters + timestampLayout := "2006-01-02 15:04:05.000 (MST Z07:00)" + currentTime := time.Now() + + // Logging + logFile, err := os.OpenFile("webimg.log", os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0644) + if err != nil { + log.Fatal(err) + } + defer logFile.Close() + log.SetOutput(logFile) + + // Log beginning of program + log.Printf("Started webimg: %s.\n", currentTime.Format(timestampLayout)) + + cmdLineArgs := os.Args + /* + Subcommands + Args[0] - executable path; + Args[1] - subcommand. + */ + + // Main subcommands + watermarkCommand := flag.NewFlagSet("watermark", flag.ExitOnError) + + // Subcommand "watermark" flag pointers + watermarkImagePtr := watermarkCommand.String("image", "", "Path to image (JPG) file to watermark.") + + // General options usable with other commands + outputVersion := flag.Bool("v", false, "Output the current version") + outputHelp := flag.Bool("h", false, "Show help information") + + flag.Parse() + + if *outputVersion { + webimg.OutputVersion() + os.Exit(0) + } else if *outputHelp { + fmt.Println("General commands:") + flag.PrintDefaults() + fmt.Println("Watermark commands:") + watermarkCommand.PrintDefaults() + + // Check if subcommand (watermark) was provided + } else if len(cmdLineArgs) >= 2 { + // Switch based on subcommand + switch cmdLineArgs[1] { + case "watermark": + watermarkCommand.Parse(cmdLineArgs[2:]) + + if *watermarkImagePtr != "" { + imageToWatermark := fmt.Sprintf("%s", *watermarkImagePtr) + fmt.Printf("Image to watermark: %s\n", imageToWatermark) + + // Input image, watermark image, result image, bottom-right offset X, bottom-right offset Y, watermark alpha + doWatermark := webimg.Watermark(imageToWatermark, "watermark_inretio-logo.png", "result_img.jpg", 30, 30, 70) + if doWatermark != nil { + fmt.Println("There was an error watermarking image...") + } + } else { + fmt.Println("No image given to watermark!") + } + default: + fmt.Println("Wrong subcommand provided!") + } + } else { + fmt.Println("No work given. Holiday time!") + } + + // Log end of program + // time.Sleep(2 * time.Second) + currentTime = time.Now() + log.Printf("Finished webimg: %s.\n", currentTime.Format(timestampLayout)) + log.Println("--------------------") +} diff --git a/cmd/webimg/result_img.jpg b/cmd/webimg/result_img.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1bf58db3f3653792458eb84c4897034dab836ebd GIT binary patch literal 41963 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 literal 0 HcmV?d00001 diff --git a/cmd/webimg/smplayer_preferences.jpg b/cmd/webimg/smplayer_preferences.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8e3b97a797784bb70a3e746c7d787e92c4afc6b3 GIT binary patch literal 36541 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 O+{_}+e82v4{(k^87fuEM literal 0 HcmV?d00001 diff --git a/cmd/webimg/watermark_inretio-logo.png b/cmd/webimg/watermark_inretio-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..0c0ade64bb0f7dd53ea344949672bcb4130b53d9 GIT binary patch literal 6079 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 FV1i!OfPer1 literal 0 HcmV?d00001 diff --git a/watermark.go b/watermark.go new file mode 100644 index 0000000..fe4eede --- /dev/null +++ b/watermark.go @@ -0,0 +1,96 @@ +/* + * Copyright © 2020 Gytis Repečka (gytis@repecka.com) + * + * This file is part of webimg. + * + * webimg is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, included + * in the LICENSE file in this source code package. + */ + +package webimg + +import ( + "fmt" + "image" + "image/color" + "image/draw" + "image/jpeg" + "image/png" + "log" + "os" +) + +func PrintHello() { + fmt.Println("Hello there!") +} + +func Watermark(imagePath, watermarkPath, resultPath string, offsetX, offsetY int, watermarkAlpha uint8) (err error) { + // Input image + // To-do: need to sanitize image paths! + image1, err := os.Open(imagePath) + if err != nil { + log.Fatalf("failed to open: %s", err) + } + first, err := jpeg.Decode(image1) + if err != nil { + log.Fatalf("failed to decode: %s", err) + } + defer image1.Close() + + // Watermark image + image2, err := os.Open(watermarkPath) + if err != nil { + log.Fatalf("failed to open: %s", err) + } + second, err := png.Decode(image2) + if err != nil { + log.Fatalf("failed to decode: %s", err) + } + defer image2.Close() + + // x, y from top-left corner + // offset := image.Pt(100, 50) + // log.Printf("Point: %V (%T)\n", offset, offset) + + // Bounds of input image + inBounds := first.Bounds() + // Bounds of watermark image + watermarkBounds := second.Bounds() + + // To-do: offset should be configurable! + watermarkCoordX1 := inBounds.Max.X - offsetX - watermarkBounds.Max.X // Input image x2 - offset x - watermark x2 + watermarkCoordY1 := inBounds.Max.Y - offsetY - watermarkBounds.Max.Y // Input image y2 - offset y - watermark y2 + + offset := image.Pt(watermarkCoordX1, watermarkCoordY1) + + outBoundsOff := watermarkBounds.Add(offset) + // outBoundsOff := inBounds.Sub(offset) + /* + log.Printf("Bounds (input): %V (%T)\n", inBounds, inBounds) + log.Printf("Bounds (watermark): %V (%T)\n", watermarkBounds, watermarkBounds) + log.Printf("Bounds (watermark with offset): %V (%T)\n", outBoundsOff, outBoundsOff) + */ + log.Printf("Watermark x1: %d, y1: %d, x2: %d, y2: %d.", outBoundsOff.Min.X, outBoundsOff.Min.Y, outBoundsOff.Max.X, outBoundsOff.Max.Y) + + // Create new (output) image with size (bounds) of input image + image3 := image.NewRGBA(inBounds) + + // Transparency + // 0 - 255 + mask := image.NewUniform(color.Alpha{watermarkAlpha}) + + draw.Draw(image3, inBounds, first, image.ZP, draw.Src) + + draw.DrawMask(image3, outBoundsOff, second, image.ZP, mask, image.ZP, draw.Over) + + third, err := os.Create(resultPath) + if err != nil { + log.Fatalf("failed to create: %s", err) + } + // jpeg.Encode(third, image3, &jpeg.Options{jpeg.DefaultQuality}) + jpeg.Encode(third, image3, &jpeg.Options{85}) + defer third.Close() + + return err +}