From 7e17de6d8e2798dd5003567a2a65e0f279d43094 Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Thu, 21 Jan 2021 00:55:53 +0100
Subject: [PATCH] Fix issue with images without colorspace or profile

Signed-off-by: Janne Koschinski <janne@kuschku.de>
---
 lib/colorspace.go          | 3 ++-
 lib/resizeImage.go         | 8 +++++++-
 lib/resizeImageInstance.go | 2 +-
 3 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/lib/colorspace.go b/lib/colorspace.go
index bfaaa96..ad395a1 100644
--- a/lib/colorspace.go
+++ b/lib/colorspace.go
@@ -2,4 +2,5 @@ package lib
 
 import "encoding/base64"
 
-var WorkingColorspace, _ = base64.StdEncoding.DecodeString("AAAEMGxjbXMEMAAAbW50clJHQiBYWVogB+AABQABAA0AGQABYWNzcCpuaXgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1sY21zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMZGVzYwAAARQAAABGY3BydAAAAVwAAAE2d3RwdAAAApQAAAAUY2hhZAAAAqgAAAAsclhZWgAAAtQAAAAUYlhZWgAAAugAAAAUZ1hZWgAAAvwAAAAUclRSQwAAAxAAAAAQZ1RSQwAAAxAAAAAQYlRSQwAAAxAAAAAQY2hybQAAAyAAAAAkZG1uZAAAA0QAAADqbWx1YwAAAAAAAAABAAAADGVuVVMAAAAqAAAAHABBAEMARQBTAC0AZQBsAGwAZQAtAFYANAAtAGcAMQAwAC4AaQBjAGMAAAAAbWx1YwAAAAAAAAABAAAADGVuVVMAAAEaAAAAHABDAG8AcAB5AHIAaQBnAGgAdAAgADIAMAAxADYALAAgAEUAbABsAGUAIABTAHQAbwBuAGUAIAAoAGgAdAB0AHAAOgAvAC8AbgBpAG4AZQBkAGUAZwByAGUAZQBzAGIAZQBsAG8AdwAuAGMAbwBtAC8AKQAsACAAQwBDAC0AQgBZAC0AUwBBACAAMwAuADAAIABVAG4AcABvAHIAdABlAGQAIAAoAGgAdAB0AHAAcwA6AC8ALwBjAHIAZQBhAHQAaQB2AGUAYwBvAG0AbQBvAG4AcwAuAG8AcgBnAC8AbABpAGMAZQBuAHMAZQBzAC8AYgB5AC0AcwBhAC8AMwAuADAALwBsAGUAZwBhAGwAYwBvAGQAZQApAC4AAAAAWFlaIAAAAAAAAPbWAAEAAAAA0y1zZjMyAAAAAAABCL8AAARO///2aAAABYkAAP4D///8vv///jkAAALmAADQIlhZWiAAAAAAAAD9qwAAXKX///9OWFlaIAAAAAD///YJ///qZAAA0cJYWVogAAAAAAAAAyIAALj3AAACHXBhcmEAAAAAAAAAAAABAABjaHJtAAAAAAADAAAAALwWAABD6wAAAAAAAQAAAAAAB///7EltbHVjAAAAAAAAAAEAAAAMZW5VUwAAAM4AAAAcAEEAQwBFAFMAIABjAGgAcgBvAG0AYQB0AGkAYwBpAHQAaQBlAHMAIABmAHIAbwBtACAAVABCAC0AMgAwADEANAAtADAAMAA0ACwAIABoAHQAdABwADoALwAvAHcAdwB3AC4AbwBzAGMAYQByAHMALgBvAHIAZwAvAHMAYwBpAGUAbgBjAGUALQB0AGUAYwBoAG4AbwBsAG8AZwB5AC8AYQBjAGUAcwAvAGEAYwBlAHMALQBkAG8AYwB1AG0AZQBuAHQAYQB0AGkAbwBuAAAAAA==")
+var ColorspaceACESLinear, _ = base64.StdEncoding.DecodeString("AAAEMGxjbXMEMAAAbW50clJHQiBYWVogB+AABQABAA0AGQABYWNzcCpuaXgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1sY21zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMZGVzYwAAARQAAABGY3BydAAAAVwAAAE2d3RwdAAAApQAAAAUY2hhZAAAAqgAAAAsclhZWgAAAtQAAAAUYlhZWgAAAugAAAAUZ1hZWgAAAvwAAAAUclRSQwAAAxAAAAAQZ1RSQwAAAxAAAAAQYlRSQwAAAxAAAAAQY2hybQAAAyAAAAAkZG1uZAAAA0QAAADqbWx1YwAAAAAAAAABAAAADGVuVVMAAAAqAAAAHABBAEMARQBTAC0AZQBsAGwAZQAtAFYANAAtAGcAMQAwAC4AaQBjAGMAAAAAbWx1YwAAAAAAAAABAAAADGVuVVMAAAEaAAAAHABDAG8AcAB5AHIAaQBnAGgAdAAgADIAMAAxADYALAAgAEUAbABsAGUAIABTAHQAbwBuAGUAIAAoAGgAdAB0AHAAOgAvAC8AbgBpAG4AZQBkAGUAZwByAGUAZQBzAGIAZQBsAG8AdwAuAGMAbwBtAC8AKQAsACAAQwBDAC0AQgBZAC0AUwBBACAAMwAuADAAIABVAG4AcABvAHIAdABlAGQAIAAoAGgAdAB0AHAAcwA6AC8ALwBjAHIAZQBhAHQAaQB2AGUAYwBvAG0AbQBvAG4AcwAuAG8AcgBnAC8AbABpAGMAZQBuAHMAZQBzAC8AYgB5AC0AcwBhAC8AMwAuADAALwBsAGUAZwBhAGwAYwBvAGQAZQApAC4AAAAAWFlaIAAAAAAAAPbWAAEAAAAA0y1zZjMyAAAAAAABCL8AAARO///2aAAABYkAAP4D///8vv///jkAAALmAADQIlhZWiAAAAAAAAD9qwAAXKX///9OWFlaIAAAAAD///YJ///qZAAA0cJYWVogAAAAAAAAAyIAALj3AAACHXBhcmEAAAAAAAAAAAABAABjaHJtAAAAAAADAAAAALwWAABD6wAAAAAAAQAAAAAAB///7EltbHVjAAAAAAAAAAEAAAAMZW5VUwAAAM4AAAAcAEEAQwBFAFMAIABjAGgAcgBvAG0AYQB0AGkAYwBpAHQAaQBlAHMAIABmAHIAbwBtACAAVABCAC0AMgAwADEANAAtADAAMAA0ACwAIABoAHQAdABwADoALwAvAHcAdwB3AC4AbwBzAGMAYQByAHMALgBvAHIAZwAvAHMAYwBpAGUAbgBjAGUALQB0AGUAYwBoAG4AbwBsAG8AZwB5AC8AYQBjAGUAcwAvAGEAYwBlAHMALQBkAG8AYwB1AG0AZQBuAHQAYQB0AGkAbwBuAAAAAA==")
+var ColorspaceSRGB, _ = base64.StdEncoding.DecodeString("AAAE6GxjbXMEMAAAbW50clJHQiBYWVogB+AABQABAA0AGQABYWNzcCpuaXgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1sY21zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMZGVzYwAAARQAAABOY3BydAAAAWQAAAE2d3RwdAAAApwAAAAUY2hhZAAAArAAAAAsclhZWgAAAtwAAAAUYlhZWgAAAvAAAAAUZ1hZWgAAAwQAAAAUclRSQwAAAxgAAAAgZ1RSQwAAAxgAAAAgYlRSQwAAAxgAAAAgY2hybQAAAzgAAAAkZG1uZAAAA1wAAAGMbWx1YwAAAAAAAAABAAAADGVuVVMAAAAyAAAAHABzAFIARwBCAC0AZQBsAGwAZQAtAFYANAAtAHMAcgBnAGIAdAByAGMALgBpAGMAYwAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAARoAAAAcAEMAbwBwAHkAcgBpAGcAaAB0ACAAMgAwADEANgAsACAARQBsAGwAZQAgAFMAdABvAG4AZQAgACgAaAB0AHQAcAA6AC8ALwBuAGkAbgBlAGQAZQBnAHIAZQBlAHMAYgBlAGwAbwB3AC4AYwBvAG0ALwApACwAIABDAEMALQBCAFkALQBTAEEAIAAzAC4AMAAgAFUAbgBwAG8AcgB0AGUAZAAgACgAaAB0AHQAcABzADoALwAvAGMAcgBlAGEAdABpAHYAZQBjAG8AbQBtAG8AbgBzAC4AbwByAGcALwBsAGkAYwBlAG4AcwBlAHMALwBiAHkALQBzAGEALwAzAC4AMAAvAGwAZQBnAGEAbABjAG8AZABlACkALgAAAABYWVogAAAAAAAA9tYAAQAAAADTLXNmMzIAAAAAAAEMQgAABd7///MlAAAHkwAA/ZD///uh///9ogAAA9wAAMBuWFlaIAAAAAAAAG+gAAA49QAAA5BYWVogAAAAAAAAJJ8AAA+EAAC2xFhZWiAAAAAAAABilwAAt4cAABjZcGFyYQAAAAAAAwAAAAJmZgAA8qcAAA1ZAAAT0AAACltjaHJtAAAAAAADAAAAAKPXAABUfAAATM0AAJmaAAAmZwAAD1xtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAXAAAAAcAHMAUgBHAEIAIABjAGgAcgBvAG0AYQB0AGkAYwBpAHQAaQBlAHMAIABmAHIAbwBtACAAQQAgAFMAdABhAG4AZABhAHIAZAAgAEQAZQBmAGEAdQBsAHQAIABDAG8AbABvAHIAIABTAHAAYQBjAGUAIABmAG8AcgAgAHQAaABlACAASQBuAHQAZQByAG4AZQB0ACAALQAgAHMAUgBHAEIALAAgAGgAdAB0AHAAOgAvAC8AdwB3AHcALgB3ADMALgBvAHIAZwAvAEcAcgBhAHAAaABpAGMAcwAvAEMAbwBsAG8AcgAvAHMAUgBHAEIAOwAgAGEAbABzAG8AIABzAGUAZQAgAGgAdAB0AHAAOgAvAC8AdwB3AHcALgBjAG8AbABvAHIALgBvAHIAZwAvAHMAcABlAGMAaQBmAGkAYwBhAHQAaQBvAG4ALwBJAEMAQwAxAHYANAAzAF8AMgAwADEAMAAtADEAMgAuAHAAZABmAAA=")
diff --git a/lib/resizeImage.go b/lib/resizeImage.go
index 4ef0d06..dcb5be5 100644
--- a/lib/resizeImage.go
+++ b/lib/resizeImage.go
@@ -42,6 +42,12 @@ func ResizeImage(config *Config, imageId string) []error {
 
 	_ = wand.AutoOrientImage()
 
+	if len(wand.GetImageProfiles("*")) == 0 {
+		if err = wand.SetImageProfile("icc", ColorspaceSRGB); err != nil {
+			return []error{err}
+		}
+	}
+
 	colorSpace := wand.GetImageColorspace()
 	if colorSpace == imagick.COLORSPACE_UNDEFINED {
 		colorSpace = imagick.COLORSPACE_SRGB
@@ -61,7 +67,7 @@ func ResizeImage(config *Config, imageId string) []error {
 	if err = wand.SetImageDepth(16); err != nil {
 		panic(err)
 	}
-	if err = wand.ProfileImage("icc", WorkingColorspace); err != nil {
+	if err = wand.ProfileImage("icc", ColorspaceACESLinear); err != nil {
 		panic(err)
 	}
 
diff --git a/lib/resizeImageInstance.go b/lib/resizeImageInstance.go
index 8cb0c53..c47f5f9 100644
--- a/lib/resizeImageInstance.go
+++ b/lib/resizeImageInstance.go
@@ -60,7 +60,7 @@ func ResizeImageInstance(mw *imagick.MagickWand, size Size) error {
 		}
 
 		if (width != nWidth) || (height != nHeight) {
-			if err = mw.ResizeImage(nWidth, nHeight, imagick.FILTER_BOX, 1); err != nil {
+			if err = mw.ResizeImage(nWidth, nHeight, imagick.FILTER_LANCZOS, 1); err != nil {
 				return err
 			}
 		}
-- 
GitLab