Documentation
¶
Index ¶
- func EstimateThumbnailSize(origWidth, origHeight int, config ThumbnailConfig) int
- func GenerateSafeThumbnail(imageData []byte) (string, error)
- func GenerateThumbnail(imageData []byte, config ThumbnailConfig) ([]byte, int, int, error)
- func GenerateThumbnailBase64(imageData []byte, config ThumbnailConfig) (string, int, int, error)
- func IsThumbnailNeeded(imageData []byte) bool
- type Config
- type ErrDeleteFailed
- type ErrDownloadFailed
- type ErrImageNotFound
- type ErrUnsupportedStorageType
- type ErrUploadFailed
- type ImageMetadata
- type ImageStorage
- type LocalStorage
- func (s *LocalStorage) Delete(ctx context.Context, imageURL string) error
- func (s *LocalStorage) Download(ctx context.Context, imageURL string) ([]byte, error)
- func (s *LocalStorage) Exists(ctx context.Context, imageURL string) (bool, error)
- func (s *LocalStorage) GetInfo(ctx context.Context, imageURL string) (*ImageMetadata, error)
- func (s *LocalStorage) GetPresignedURL(ctx context.Context, imageURL string, duration time.Duration) (string, error)
- func (s *LocalStorage) Upload(ctx context.Context, image []byte, metadata ImageMetadata) (string, error)
- type MinioStorage
- func (s *MinioStorage) Delete(ctx context.Context, imageURL string) error
- func (s *MinioStorage) Download(ctx context.Context, imageURL string) ([]byte, error)
- func (s *MinioStorage) Exists(ctx context.Context, imageURL string) (bool, error)
- func (s *MinioStorage) GetInfo(ctx context.Context, imageURL string) (*ImageMetadata, error)
- func (s *MinioStorage) GetPresignedURL(ctx context.Context, imageURL string, duration time.Duration) (string, error)
- func (s *MinioStorage) Upload(ctx context.Context, image []byte, metadata ImageMetadata) (string, error)
- type StorageType
- type ThumbnailConfig
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func EstimateThumbnailSize ¶
func EstimateThumbnailSize(origWidth, origHeight int, config ThumbnailConfig) int
EstimateThumbnailSize estimates the size of a thumbnail in bytes This is useful for checking if it will fit within Milvus VARCHAR limits (65KB)
func GenerateSafeThumbnail ¶
GenerateSafeThumbnail generates a thumbnail that fits within Milvus VARCHAR limits Returns base64-encoded thumbnail that is guaranteed to be <65KB
func GenerateThumbnail ¶
GenerateThumbnail creates a thumbnail from an image Returns the thumbnail as bytes and its dimensions
func GenerateThumbnailBase64 ¶
GenerateThumbnailBase64 creates a base64-encoded thumbnail
func IsThumbnailNeeded ¶
IsThumbnailNeeded checks if a thumbnail is needed to fit within Milvus limits Milvus VARCHAR limit: 65,535 bytes Base64 overhead: 1.37x Safe limit for original image: ~47KB (~48,000 bytes)
Types ¶
type Config ¶
type Config struct {
// Type of storage (s3, minio, local)
Type StorageType
// S3/MinIO configuration
Endpoint string // MinIO endpoint (e.g., "localhost:9000")
AccessKey string
SecretKey string
Region string
Bucket string
UseSSL bool
PathPrefix string // Optional prefix for all keys (e.g., "images/")
PresignDuration time.Duration
// Local storage configuration (for testing)
LocalPath string // Base directory for local storage
}
Config contains configuration for storage backends
type ErrDeleteFailed ¶
ErrDeleteFailed is returned when image deletion fails
func (*ErrDeleteFailed) Error ¶
func (e *ErrDeleteFailed) Error() string
func (*ErrDeleteFailed) Unwrap ¶
func (e *ErrDeleteFailed) Unwrap() error
type ErrDownloadFailed ¶
ErrDownloadFailed is returned when image download fails
func (*ErrDownloadFailed) Error ¶
func (e *ErrDownloadFailed) Error() string
func (*ErrDownloadFailed) Unwrap ¶
func (e *ErrDownloadFailed) Unwrap() error
type ErrImageNotFound ¶
type ErrImageNotFound struct {
URL string
}
ErrImageNotFound is returned when an image doesn't exist
func (*ErrImageNotFound) Error ¶
func (e *ErrImageNotFound) Error() string
type ErrUnsupportedStorageType ¶
type ErrUnsupportedStorageType struct {
Type string
}
ErrUnsupportedStorageType is returned when an unsupported storage type is requested
func (*ErrUnsupportedStorageType) Error ¶
func (e *ErrUnsupportedStorageType) Error() string
type ErrUploadFailed ¶
ErrUploadFailed is returned when image upload fails
func (*ErrUploadFailed) Error ¶
func (e *ErrUploadFailed) Error() string
func (*ErrUploadFailed) Unwrap ¶
func (e *ErrUploadFailed) Unwrap() error
type ImageMetadata ¶
type ImageMetadata struct {
// Original filename
Filename string
// MIME type (e.g., "image/jpeg", "image/png")
ContentType string
// Size in bytes
Size int64
// Image dimensions
Width int
Height int
// Collection and document IDs for organization
CollectionName string
DocumentID string
// Additional custom metadata
Custom map[string]string
}
ImageMetadata contains metadata about an uploaded image
type ImageStorage ¶
type ImageStorage interface {
// Upload stores an image and returns its URL
// The URL format depends on the storage backend:
// - S3: https://bucket.s3.region.amazonaws.com/path/to/image.jpg
// - MinIO: http://localhost:9000/bucket/path/to/image.jpg
Upload(ctx context.Context, image []byte, metadata ImageMetadata) (string, error)
// Download retrieves an image by its URL
Download(ctx context.Context, url string) ([]byte, error)
// Delete removes an image by its URL
Delete(ctx context.Context, url string) error
// Exists checks if an image exists at the given URL
Exists(ctx context.Context, url string) (bool, error)
// GetURL returns a pre-signed URL for temporary access (if supported)
// Duration specifies how long the URL should be valid
// Returns the original URL if pre-signing is not supported
GetPresignedURL(ctx context.Context, url string, duration time.Duration) (string, error)
// GetInfo returns metadata about a stored image
GetInfo(ctx context.Context, url string) (*ImageMetadata, error)
}
ImageStorage defines the interface for external image storage backends
func NewImageStorage ¶
func NewImageStorage(config Config) (ImageStorage, error)
NewImageStorage creates a new ImageStorage instance based on the config
type LocalStorage ¶
type LocalStorage struct {
// contains filtered or unexported fields
}
LocalStorage implements ImageStorage using local filesystem NOTE: For testing only, not recommended for production
func NewLocalStorage ¶
func NewLocalStorage(config Config) (*LocalStorage, error)
NewLocalStorage creates a new local filesystem storage backend
func (*LocalStorage) Delete ¶
func (s *LocalStorage) Delete(ctx context.Context, imageURL string) error
Delete removes an image by its file path
func (*LocalStorage) GetInfo ¶
func (s *LocalStorage) GetInfo(ctx context.Context, imageURL string) (*ImageMetadata, error)
GetInfo returns metadata about a stored image
func (*LocalStorage) GetPresignedURL ¶
func (s *LocalStorage) GetPresignedURL(ctx context.Context, imageURL string, duration time.Duration) (string, error)
GetPresignedURL returns the original file:// URL (no presigning for local files)
func (*LocalStorage) Upload ¶
func (s *LocalStorage) Upload(ctx context.Context, image []byte, metadata ImageMetadata) (string, error)
Upload stores an image and returns its file path
type MinioStorage ¶
type MinioStorage struct {
// contains filtered or unexported fields
}
MinioStorage implements ImageStorage using MinIO (S3-compatible)
func NewMinioStorage ¶
func NewMinioStorage(config Config) (*MinioStorage, error)
NewMinioStorage creates a new MinIO storage backend
func NewS3Storage ¶
func NewS3Storage(config Config) (*MinioStorage, error)
NewS3Storage creates a new AWS S3 storage backend Uses the same implementation as MinIO (S3-compatible)
func (*MinioStorage) Delete ¶
func (s *MinioStorage) Delete(ctx context.Context, imageURL string) error
Delete removes an image by its URL
func (*MinioStorage) GetInfo ¶
func (s *MinioStorage) GetInfo(ctx context.Context, imageURL string) (*ImageMetadata, error)
GetInfo returns metadata about a stored image
func (*MinioStorage) GetPresignedURL ¶
func (s *MinioStorage) GetPresignedURL(ctx context.Context, imageURL string, duration time.Duration) (string, error)
GetPresignedURL returns a pre-signed URL for temporary access
func (*MinioStorage) Upload ¶
func (s *MinioStorage) Upload(ctx context.Context, image []byte, metadata ImageMetadata) (string, error)
Upload stores an image and returns its URL
type StorageType ¶
type StorageType string
StorageType represents the type of storage backend
const ( StorageTypeS3 StorageType = "s3" StorageTypeMinio StorageType = "minio" StorageTypeLocal StorageType = "local" // For testing only )
type ThumbnailConfig ¶
type ThumbnailConfig struct {
// Maximum width in pixels (default: 256)
MaxWidth int
// Maximum height in pixels (default: 256)
MaxHeight int
// JPEG quality (1-100, default: 85)
Quality int
// Output format: "jpeg" or "png" (default: "jpeg")
Format string
}
ThumbnailConfig contains configuration for thumbnail generation
func DefaultThumbnailConfig ¶
func DefaultThumbnailConfig() ThumbnailConfig
DefaultThumbnailConfig returns sensible defaults for thumbnail generation