diff --git a/electricboogaloo b/electricboogaloo index cbdaaa0..a89db02 100755 Binary files a/electricboogaloo and b/electricboogaloo differ diff --git a/image.go b/image.go index e36221e..6430571 100644 --- a/image.go +++ b/image.go @@ -2,18 +2,22 @@ package main import ( "bytes" + "fmt" "image" _ "image/gif" "image/jpeg" _ "image/png" "os" + "strconv" "golang.org/x/image/draw" ) func retrieveArt(path string) ([]byte, error) { - //streaming PC is primarily flacs, so flacs first, then mp3s, then check for covers in folder, finally just use a default image if none of the above exist. + //streaming PC is primarily flacs, so flacs first, then mp3s, then check + //for covers in folder, finally just use a default image if none of the + //above exist. switch { case hasFlacTrackArt(path): return getFlacArt(path) @@ -57,3 +61,35 @@ func writeArtFile(orig []byte) (string, error) { } return pathOut, nil } + +func processBGColor(path string) (float64, error) { + imageSize := 1 + f, err := os.ReadFile(path) + if err != nil { + return 0, err + } + imgBuff := bytes.NewBuffer(f) + imgOrig, _, err := image.Decode(imgBuff) + if err != nil { + return 0, err + } + + img := image.NewRGBA(image.Rect(0, 0, imageSize, imageSize)) + + draw.ApproxBiLinear.Scale(img, img.Rect, imgOrig, imgOrig.Bounds(), draw.Over, nil) + + r, g, b, _ := img.At(0, 0).RGBA() + // convert from 32 bit color back into 8 bit color + // this is to undo x |= x << 8 each value goes through + // trust me it works bro. bro it works. + r &= r >> 8 + g &= g >> 8 + b &= b >> 8 + //a &= a >> 8 + // 25 becomes 0x19, 36 is close to 10% of 256 + fmt.Printf("0x%02x %02x %02x %02x\n", 25, r, g, b) + // it wants it abgr for some reason + rgba := fmt.Sprintf("0x%02x%02x%02x%02x", 25, b, g, r) + rgbaInt, err := strconv.ParseInt(rgba, 0, 64) + return float64(rgbaInt), err +}