Initial QSfera import

This commit is contained in:
Курнат Андрей
2026-06-07 10:20:04 +03:00
commit 2315f25754
16485 changed files with 4826827 additions and 0 deletions
@@ -0,0 +1,50 @@
package autometa
import (
"io"
"github.com/kovidgoyal/imaging/prism/meta"
"github.com/kovidgoyal/imaging/prism/meta/gifmeta"
"github.com/kovidgoyal/imaging/prism/meta/jpegmeta"
"github.com/kovidgoyal/imaging/prism/meta/netpbmmeta"
"github.com/kovidgoyal/imaging/prism/meta/pngmeta"
"github.com/kovidgoyal/imaging/prism/meta/tiffmeta"
"github.com/kovidgoyal/imaging/prism/meta/webpmeta"
"github.com/kovidgoyal/imaging/streams"
)
var loaders = []func(io.Reader) (*meta.Data, error){
jpegmeta.ExtractMetadata,
pngmeta.ExtractMetadata,
gifmeta.ExtractMetadata,
webpmeta.ExtractMetadata,
tiffmeta.ExtractMetadata,
netpbmmeta.ExtractMetadata,
}
// Load loads the metadata for an image stream, which may be one of the
// supported image formats.
//
// Only as much of the stream is consumed as necessary to extract the metadata;
// the returned stream contains a buffered copy of the consumed data such that
// reading from it will produce the same results as fully reading the input
// stream. This provides a convenient way to load the full image after loading
// the metadata.
//
// Returns nil if the no image format was recognized. Returns an error if there
// was an error decoding metadata.
func Load(r io.Reader) (md *meta.Data, imgStream io.Reader, err error) {
for _, loader := range loaders {
r, err = streams.CallbackWithSeekable(r, func(r io.Reader) (err error) {
md, err = loader(r)
return
})
switch {
case err != nil:
return nil, r, err
case md != nil:
return md, r, nil
}
}
return nil, r, nil
}
@@ -0,0 +1,3 @@
// Package autometa provides support for embedded metadata and automatic
// detection of image formats.
package autometa