mirror of
https://github.com/photoprism/photoprism.git
synced 2025-12-11 16:24:11 +01:00
76 lines
2.6 KiB
Go
76 lines
2.6 KiB
Go
package thumb
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/davidbyttow/govips/v2/vips"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestVipsSetIccProfileForInteropIndex(t *testing.T) {
|
|
t.Run("PreservesExistingProfile", func(t *testing.T) {
|
|
VipsInit()
|
|
|
|
img, err := vips.LoadImageFromFile("testdata/interop_index_srgb_icc.jpg", VipsImportParams())
|
|
require.NoError(t, err)
|
|
|
|
iiFull := img.GetString("exif-ifd4-InteroperabilityIndex")
|
|
require.NotEmpty(t, iiFull)
|
|
require.True(t, img.HasICCProfile())
|
|
|
|
originalProfile := img.GetICCProfile()
|
|
require.NotEmpty(t, originalProfile)
|
|
|
|
err = vipsSetIccProfileForInteropIndex(img, "interop_index_srgb_icc.jpg")
|
|
assert.NoError(t, err)
|
|
assert.True(t, img.HasICCProfile())
|
|
assert.Equal(t, originalProfile, img.GetICCProfile())
|
|
})
|
|
t.Run("EmbedsAdobeProfileWhenMissing", func(t *testing.T) {
|
|
VipsInit()
|
|
|
|
img, err := vips.LoadImageFromFile("testdata/interop_index.jpg", VipsImportParams())
|
|
require.NoError(t, err)
|
|
require.False(t, img.HasICCProfile(), "fixture should have no embedded ICC profile")
|
|
|
|
err = vipsSetIccProfileForInteropIndex(img, "interop_index.jpg")
|
|
assert.NoError(t, err)
|
|
assert.True(t, img.HasICCProfile(), "Adobe ICC profile should be embedded based on InteropIndex R03")
|
|
assert.NotEmpty(t, img.GetICCProfile())
|
|
})
|
|
t.Run("NoInteropIndexNoop", func(t *testing.T) {
|
|
VipsInit()
|
|
|
|
img, err := vips.LoadImageFromFile("testdata/example.jpg", VipsImportParams())
|
|
require.NoError(t, err)
|
|
|
|
hasICCBefore := img.HasICCProfile()
|
|
err = vipsSetIccProfileForInteropIndex(img, "example.jpg")
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, hasICCBefore, img.HasICCProfile())
|
|
})
|
|
t.Run("InteropIndexSRGB_NoEmbed", func(t *testing.T) {
|
|
VipsInit()
|
|
|
|
img, err := vips.LoadImageFromFile("testdata/interop_index_r98.jpg", VipsImportParams())
|
|
require.NoError(t, err)
|
|
require.False(t, img.HasICCProfile(), "fixture should have no embedded ICC profile")
|
|
|
|
err = vipsSetIccProfileForInteropIndex(img, "interop_index_r98.jpg")
|
|
assert.NoError(t, err)
|
|
assert.False(t, img.HasICCProfile(), "sRGB interop index should remain without embedded ICC")
|
|
})
|
|
t.Run("InteropIndexThumb_NoEmbed", func(t *testing.T) {
|
|
VipsInit()
|
|
|
|
img, err := vips.LoadImageFromFile("testdata/interop_index_thm.jpg", VipsImportParams())
|
|
require.NoError(t, err)
|
|
require.False(t, img.HasICCProfile(), "fixture should have no embedded ICC profile")
|
|
|
|
err = vipsSetIccProfileForInteropIndex(img, "interop_index_thm.jpg")
|
|
assert.NoError(t, err)
|
|
assert.False(t, img.HasICCProfile(), "THM interop index should remain without embedded ICC")
|
|
})
|
|
}
|