package img import ( "fmt" "os" "os/exec" "path/filepath" "strings" "git.clearsky.net.au/cody/gex.git/gen/domquery" ) func Process(htmlDir string, tag *domquery.Node) string { imgSrc := tag.GetAttribute("src") fileName := filepath.Base(imgSrc) if !strings.Contains(imgSrc, "app/") { imgSrc = htmlDir + "/" + imgSrc } imgSrc = strings.Replace(imgSrc, "/app/", "app/", 1) _, err := os.ReadFile(imgSrc) if err != nil { fmt.Println(err) return "" } w := tag.GetAttribute("w") h := tag.GetAttribute("h") cx := tag.GetAttribute("cx") if cx == "" { cx = "0" } cy := tag.GetAttribute("cy") if cy == "" { cy = "0" } cw := tag.GetAttribute("cw") if cw == "" { cw = "0" } ch := tag.GetAttribute("ch") if ch == "" { ch = "0" } q := tag.GetAttribute("q") command := "convert " + imgSrc + " -auto-orient" if w != "" || h != "" { command += " -resize " + w + "x" + h } if cw != "" && ch != "" { command += " -crop " + cw + "x" + ch + "+" + cx + "+" + cy } if q != "" { command += " -quality " + q } newImgSrc := "app/pub/gen/" + strings.Split(fileName, ".")[0] + w + h + cx + cy + cw + ch + q + ".webp" _, err = os.ReadFile(newImgSrc) if err == nil { tag.SetAttribute("src", "/"+newImgSrc) return "" } else { fmt.Println(err) } command += " " + newImgSrc cmd := exec.Command("bash", "-c", command) _, err = cmd.Output() if err != nil { fmt.Println(err) } tag.SetAttribute("src", "/"+newImgSrc) tag.RemoveAttribute("webp") tag.RemoveAttribute("w") tag.RemoveAttribute("h") tag.RemoveAttribute("cx") tag.RemoveAttribute("cy") tag.RemoveAttribute("cw") tag.RemoveAttribute("ch") return "" }