@@ -28,6 +28,7 @@ import (
28
28
29
29
"github.com/photoprism/photoprism/internal/entity"
30
30
"github.com/photoprism/photoprism/internal/meta"
31
+ "github.com/photoprism/photoprism/internal/thumb"
31
32
"github.com/photoprism/photoprism/pkg/clean"
32
33
"github.com/photoprism/photoprism/pkg/fs"
33
34
"github.com/photoprism/photoprism/pkg/media"
@@ -1184,40 +1185,13 @@ func (m *MediaFile) DecodeConfig() (_ *image.Config, err error) {
1184
1185
return nil , fmt .Errorf ("%s not supported natively" , clean .Log (m .Extension ()))
1185
1186
}
1186
1187
1187
- m .fileMutex .Lock ()
1188
- defer m .fileMutex .Unlock ()
1189
-
1190
- fileName := m .FileName ()
1191
-
1192
- // Resolve symlinks.
1193
- if fileName , err = fs .Resolve (fileName ); err != nil {
1194
- return nil , fmt .Errorf ("%s %s" , err , clean .Log (m .RootRelName ()))
1195
- }
1196
-
1197
- file , err := os .Open (fileName )
1198
-
1199
- if err != nil || file == nil {
1200
- return nil , err
1201
- }
1202
-
1203
- defer file .Close ()
1204
-
1205
- // Reset file offset.
1206
- // see https://github.com/golang/go/issues/45902#issuecomment-1007953723
1207
- _ , err = file .Seek (0 , 0 )
1188
+ var info image.Config
1208
1189
1209
- if err != nil {
1210
- return nil , fmt .Errorf ("%s on seek" , err )
1211
- }
1212
-
1213
- // Decode image config (dimensions).
1214
- cfg , _ , err := image .DecodeConfig (file )
1215
-
1216
- if err != nil {
1217
- return nil , fmt .Errorf ("%s while decoding" , err )
1190
+ if info , err = thumb .FileInfo (m .FileName ()); err != nil {
1191
+ return nil , fmt .Errorf ("%s while decoding %s dimensions" , err , clean .Log (m .Extension ()))
1218
1192
}
1219
1193
1220
- m .imageConfig = & cfg
1194
+ m .imageConfig = & info
1221
1195
1222
1196
return m .imageConfig , nil
1223
1197
}
0 commit comments