[MM-62191] Remove disintegration/imaging dependency (#29657)

* Remove disintegration/imaging dependency

* Simplify FillCenter logic

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
Этот коммит содержится в:
Claudio Costa
2025-02-02 23:34:00 -06:00
коммит произвёл GitHub
родитель 28dbc3cabb
Коммит 316cde2569
29 изменённых файлов: 468 добавлений и 22 удалений

Просмотреть файл

@@ -5,6 +5,7 @@ package imaging
import (
"bytes"
"image"
"image/color"
"os"
"testing"
@@ -115,3 +116,234 @@ func TestFillImageTransparency(t *testing.T) {
require.Equal(t, expectedImg, inputImg)
})
}
func TestCropCenter(t *testing.T) {
imgDir, ok := fileutils.FindDir("tests")
require.True(t, ok)
d, err := NewDecoder(DecoderOptions{})
require.NotNil(t, d)
require.NoError(t, err)
for _, tc := range []struct {
name string
inputName string
outputName string
width int
height int
}{
{
"Crop to center 100x100",
"crop_test_input.png",
"crop_test_output_100x100.png",
100,
100,
},
{
"Crop to center 45x45",
"crop_test_input.png",
"crop_test_output_45x45.png",
45,
45,
},
{
"Crop to center 100x45",
"crop_test_input.png",
"crop_test_output_100x45.png",
100,
45,
},
{
"Crop to center 45x100",
"crop_test_input.png",
"crop_test_output_45x100.png",
45,
100,
},
} {
t.Run(tc.name, func(t *testing.T) {
inputFile, err := os.Open(imgDir + "/" + tc.inputName)
require.NoError(t, err)
require.NotNil(t, inputFile)
defer func() {
require.NoError(t, inputFile.Close())
}()
inputImg, format, err := d.Decode(inputFile)
require.NoError(t, err)
require.NotNil(t, inputImg)
require.Equal(t, "png", format)
expectedFile, err := os.Open(imgDir + "/" + tc.outputName)
require.NoError(t, err)
require.NotNil(t, expectedFile)
defer func() {
require.NoError(t, expectedFile.Close())
}()
expectedImg, format, err := d.Decode(expectedFile)
require.NoError(t, err)
require.NotNil(t, expectedImg)
require.Equal(t, "png", format)
croppedImg := CropCenter(inputImg, tc.width, tc.height)
require.Equal(t, expectedImg.Bounds().Dx(), croppedImg.Bounds().Dx())
require.Equal(t, expectedImg.Bounds().Dy(), croppedImg.Bounds().Dy())
require.Equal(t, expectedImg.(*image.RGBA).Pix, croppedImg.(*image.RGBA).Pix)
})
}
}
func TestFit(t *testing.T) {
imgDir, ok := fileutils.FindDir("tests")
require.True(t, ok)
d, err := NewDecoder(DecoderOptions{})
require.NotNil(t, d)
require.NoError(t, err)
for _, tc := range []struct {
name string
inputName string
outputName string
width int
height int
}{
{
"Fit to 100x100",
"fit_test_input.png",
"fit_test_output_100x100.png",
100,
100,
},
{
"Fit to 45x45",
"fit_test_input.png",
"fit_test_output_45x45.png",
45,
45,
},
{
"Fit to 100x45",
"fit_test_input.png",
"fit_test_output_100x45.png",
100,
45,
},
{
"Fit to 45x100",
"fit_test_input.png",
"fit_test_output_45x100.png",
45,
100,
},
} {
t.Run(tc.name, func(t *testing.T) {
inputFile, err := os.Open(imgDir + "/" + tc.inputName)
require.NoError(t, err)
require.NotNil(t, inputFile)
defer func() {
require.NoError(t, inputFile.Close())
}()
inputImg, format, err := d.Decode(inputFile)
require.NoError(t, err)
require.NotNil(t, inputImg)
require.Equal(t, "png", format)
expectedFile, err := os.Open(imgDir + "/" + tc.outputName)
require.NoError(t, err)
require.NotNil(t, expectedFile)
defer func() {
require.NoError(t, expectedFile.Close())
}()
expectedImg, format, err := d.Decode(expectedFile)
require.NoError(t, err)
require.NotNil(t, expectedImg)
require.Equal(t, "png", format)
fittedImg := Fit(inputImg, tc.width, tc.height)
require.Equal(t, expectedImg, fittedImg)
})
}
}
func TestFillCenter(t *testing.T) {
imgDir, ok := fileutils.FindDir("tests")
require.True(t, ok)
d, err := NewDecoder(DecoderOptions{})
require.NotNil(t, d)
require.NoError(t, err)
tcs := []struct {
name string
inputName string
outputName string
width int
height int
}{
{
"Fill center 100x100",
"fill_test_input.png",
"fill_test_output_100x100.png",
100,
100,
},
{
"Fill center 45x45",
"fill_test_input.png",
"fill_test_output_45x45.png",
45,
45,
},
{
"Fill center 100x45",
"fill_test_input.png",
"fill_test_output_100x45.png",
100,
45,
},
{
"Fill center 45x100",
"fill_test_input.png",
"fill_test_output_45x100.png",
45,
100,
},
}
for _, tc := range tcs {
t.Run(tc.name, func(t *testing.T) {
inputFile, err := os.Open(imgDir + "/" + tc.inputName)
require.NoError(t, err)
require.NotNil(t, inputFile)
defer func() {
require.NoError(t, inputFile.Close())
}()
inputImg, format, err := d.Decode(inputFile)
require.NoError(t, err)
require.NotNil(t, inputImg)
require.Equal(t, "png", format)
expectedFile, err := os.Open(imgDir + "/" + tc.outputName)
require.NoError(t, err)
require.NotNil(t, expectedFile)
defer func() {
require.NoError(t, expectedFile.Close())
}()
expectedImg, format, err := d.Decode(expectedFile)
require.NoError(t, err)
require.NotNil(t, expectedImg)
require.Equal(t, "png", format)
filledImg := FillCenter(inputImg, tc.width, tc.height)
require.Equal(t, expectedImg.Bounds().Dx(), filledImg.Bounds().Dx())
require.Equal(t, expectedImg.Bounds().Dy(), filledImg.Bounds().Dy())
require.Equal(t, expectedImg.(*image.RGBA).Pix, filledImg.(*image.RGBA).Pix)
})
}
}