Initial commit

This commit is contained in:
2026-02-24 17:34:02 +01:00
Unverified
parent e41d3598a4
commit 87d48c905a
4 changed files with 84 additions and 0 deletions

10
go.mod Normal file
View File

@@ -0,0 +1,10 @@
module profile-picture-generator
go 1.25.0
require github.com/fogleman/gg v1.3.0
require (
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect
golang.org/x/image v0.36.0 // indirect
)

6
go.sum Normal file
View File

@@ -0,0 +1,6 @@
github.com/fogleman/gg v1.3.0 h1:/7zJX8F6AaYQc57WQCyN9cAIz+4bCJGO9B+dyW29am8=
github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g=
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k=
golang.org/x/image v0.36.0 h1:Iknbfm1afbgtwPTmHnS2gTM/6PPZfH+z2EFuOkSbqwc=
golang.org/x/image v0.36.0/go.mod h1:YsWD2TyyGKiIX1kZlu9QfKIsQ4nAAK9bdgdrIsE7xy4=

68
main.go Normal file
View File

@@ -0,0 +1,68 @@
package main
import (
"crypto/sha1"
"fmt"
"strconv"
"github.com/fogleman/gg"
)
// 8x8 square of 100x100 px squares
func main() {
dc := gg.NewContext(800, 800)
hash := hash("InsightForgeOrg")
colorString := hash[0:6]
r, g, b := rgbFromHex(colorString)
dc.SetRGB255(r, g, b)
for i, character := range hash[6:14] {
tmp, _ := strconv.ParseUint(string(character), 16, 8)
n := int(tmp)
for _, v := range []uint{0, 1, 2, 3} {
on := hasBit(n, v)
dc.DrawRectangle(float64(v * 100), float64(i * 100), 100, 100)
dc.DrawRectangle(700 - float64(v * 100), float64(i * 100), 100, 100)
if !on {
dc.SetRGB255(r, g, b)
} else {
dc.SetRGB255(255, 255, 255)
}
dc.Fill()
}
}
dc.SavePNG("out.png")
}
func rgbFromHex(hex string) (int, int, int) {
r, _ := strconv.ParseUint(hex[0:2], 16, 8)
g, _ := strconv.ParseUint(hex[2:4], 16, 8)
b, _ := strconv.ParseUint(hex[4:6], 16, 8)
return int(r), int(g), int(b)
}
func hash(str string) string {
h := sha1.New()
h.Write([]byte(str))
res := h.Sum(nil)
return fmt.Sprintf("%x", res)
}
func hasBit(n int, pos uint) bool {
val := n & (1 << pos)
return (val > 0)
}
// 9d26bf3cf1fb2b2f02d4a2013333f4fcd551cb2e
// 9d26bf -> color
// 3 -> row1
// c -> row2
// ...
// b -> row8
// 3 = 0 0 1 1
//

BIN
out.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB